<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Stack Overflow Problem]]></title><description><![CDATA[<p>Hallo zusamen,</p>
<p>ich arbeite mit Visual C++ 6.0 / MFC und habe folgendes Problem:<br />
Ich bekomme immer die Fehlermeldung, dass ich einen Stack Overflow bekomme,nur ich weiß nicht durch was.</p>
<p>Beim starten eines Dialoges wird eine Funktion gestartet die daten aus einer Datenbank holt. Diese werden in einer dritten Funtion verarbeitet. Darin wird überprüft ob der Dialog noch geöffnet ist,falls ja wird die erste Funktion wieder gestartet und alles beginnt von vorne.</p>
<pre><code class="language-cpp">BOOL CKlasse::OnInitDialog()
{
   HoleDaten();
}

void CKlasse::HoleDaten()
{
   globalerPointer-&gt;DatenausDatenbank();
}

void CKlasse2::DatenausDatenbank()
{
  Holt Daten aus DB und übergibt diese an:
  globalerPointer-&gt;VerarbeiteDaten();
}

void CKlasse::VerarbeiteDaten()
{
  verarbeitet Daten, und überprüft anschließend
  ob Dialog noch geöfnet ist (mit Hilfe eines Flags)
  wenn ja wird erste Funktion wieder aufgerufen und alles beginnt von vorne:
  HoleDaten();
}
</code></pre>
<p>Bin über jede Hilfe sehr dankbar!!!<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144661/stack-overflow-problem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:11:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144661.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Apr 2006 09:37:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stack Overflow Problem on Thu, 20 Apr 2006 09:37:01 GMT]]></title><description><![CDATA[<p>Hallo zusamen,</p>
<p>ich arbeite mit Visual C++ 6.0 / MFC und habe folgendes Problem:<br />
Ich bekomme immer die Fehlermeldung, dass ich einen Stack Overflow bekomme,nur ich weiß nicht durch was.</p>
<p>Beim starten eines Dialoges wird eine Funktion gestartet die daten aus einer Datenbank holt. Diese werden in einer dritten Funtion verarbeitet. Darin wird überprüft ob der Dialog noch geöffnet ist,falls ja wird die erste Funktion wieder gestartet und alles beginnt von vorne.</p>
<pre><code class="language-cpp">BOOL CKlasse::OnInitDialog()
{
   HoleDaten();
}

void CKlasse::HoleDaten()
{
   globalerPointer-&gt;DatenausDatenbank();
}

void CKlasse2::DatenausDatenbank()
{
  Holt Daten aus DB und übergibt diese an:
  globalerPointer-&gt;VerarbeiteDaten();
}

void CKlasse::VerarbeiteDaten()
{
  verarbeitet Daten, und überprüft anschließend
  ob Dialog noch geöfnet ist (mit Hilfe eines Flags)
  wenn ja wird erste Funktion wieder aufgerufen und alles beginnt von vorne:
  HoleDaten();
}
</code></pre>
<p>Bin über jede Hilfe sehr dankbar!!!<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041145</guid><dc:creator><![CDATA[Dippi_81]]></dc:creator><pubDate>Thu, 20 Apr 2006 09:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to Stack Overflow Problem on Thu, 20 Apr 2006 09:42:07 GMT]]></title><description><![CDATA[<p>Du hast da eine nette kleine Endlosrekursion aufgebaut: HoleDaten() ruft DatenausDatenbank() ruft VerarbeiteDaten() ruft HoleDaten() ruft ... (und jeder Funktionsaufruf reserviert sich ein weiteres Stück des Stacks für lokale Variablen und Hilfsstrukturen)</p>
<p>Ich schlage dir vor, das komplette Design zu überdenken und statt der Rekursion lieber eine Schleife zu verwenden:</p>
<pre><code class="language-cpp">HoleDaten()
{
  while(ready /*Flag-Abfrage, ob noch Daten erforderlich sind*/)
  {
    DatenausDatenbank();
    VerarbeiteDaten();
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1041151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041151</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Apr 2006 09:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to Stack Overflow Problem on Thu, 20 Apr 2006 09:55:17 GMT]]></title><description><![CDATA[<p>Ok ich versuchs mal..Vielen Dank fürs erste<br />
Falls ich nicht weiterkomme, schreibe ich einfach nochmal!</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041161</guid><dc:creator><![CDATA[Dippi_81]]></dc:creator><pubDate>Thu, 20 Apr 2006 09:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Stack Overflow Problem on Thu, 20 Apr 2006 10:18:56 GMT]]></title><description><![CDATA[<p>So jetzt hab ich den Stack Overflow weg, dafür öffnet sich der Dialog nicht mehr...</p>
<p>Alles was ich geändert habe:</p>
<p>In der Funktion Holedaten()<br />
eine</p>
<pre><code class="language-cpp">While(DialogOffen == 1)
{
  DatenausDatenbank();
}
</code></pre>
<p>Damit ist der Stack Overflow weg...aber wie gesagt der Dialog öffnet sich nicht mehr...das Programm hängt sich auf!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041186</guid><dc:creator><![CDATA[Dippi_81]]></dc:creator><pubDate>Thu, 20 Apr 2006 10:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to Stack Overflow Problem on Thu, 20 Apr 2006 10:36:03 GMT]]></title><description><![CDATA[<p>Eventuell solltest du die HoleDaten()-Funktion aus der OnInitDialog() rausschmeißen auf einen späteren Zeitpunkt - der Dialog wird erst angezeigt, wenn die Init()-Methode durch ist, und die wird erst beendet, wenn du mit Daten holen fertig bist.</p>
<p>(auch wenn's kompliziert erscheint, ich würde dir einen Zusatzthread für die Datenverarbeitung empfehlen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041201</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Apr 2006 10:36:03 GMT</pubDate></item></channel></rss>