<?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[Unkontrollierte&#x5C;ungewollte Pointer deklaration]]></title><description><![CDATA[<p>Hi Leute,<br />
ich habe ein Problem mit meiner doppelt verketteten Liste. Anfügen und bearbeiten ist alles kein Ding, aber in einem Fall schreibt das Programm den vorgaenger-Pointer des allerersten Objektes von Null auf irgendeine andere idiotische Adresse um.<br />
Also diesen Pointer:<br />
falsch&lt;-Objekt-&gt;&lt;-Objekt-&gt;Null</p>
<p>Alle anderen Pointer sitzen völlig korrekt.<br />
Nun tritt dieser Fall nur ein, wenn der Benutzer &quot;Starten&quot; drückt, die Verarbeitung beginnt (die liste wird nicht verändert, sie wird nur rumgeschoben) und beendet. Möchte man nun darauffolgend Einstellungen in der Liste ändern, versucht er noch richtig die Lister herunterzuzaehlen...</p>
<pre><code class="language-cpp">while(liste-&gt;vorgaenger != NULL) 
   liste = liste-&gt;vorgaenger;
</code></pre>
<p>Da aber der Pointer des ersten Objektes auf eine falsche Adresse zeigt, wirft das Programm irgendwann einen Fehler aus.</p>
<p>So, ich hoffe ihr versteht mein Problem. Viel code konnte ich nicht zeigen, wird nichts bringen. Habe alles durchgetestet. Der Code selber verändert nichts mehr an Pointern.<br />
Vielleicht liegt es daran das die Liste public ist und ich sie bei der &quot;Verarbeitung&quot; in einer anderen Klasse verwende?</p>
<p>Jede Antwort hilft, helft :).<br />
Gruß icestar</p>
<p>/////////////<br />
UPDATE<br />
/////////////</p>
<p>Habe gerade herausgefunden das es an dem Aufruf einer Form liegt. Wie mir mal zu Ohren gekommen ist sollte man keine manuelle Instanz für eine Form anlegen.<br />
Habe ich gemacht und tatsächlich sind die Pointer nun alle i.O.<br />
Hier mal der Code mit den nun auskommentierten Zeilen</p>
<pre><code class="language-cpp">//Optionen = new TOptionen(Application);

	if (Optionen-&gt;ShowModal() == ID_OK)
	{
		ListeRunterZaehlen();
		VariablenDerListeZuordnen(Anker);
		ListeAktualisieren();
	}

//Optionen-&gt;Hide();
//delete Optionen;
</code></pre>
<p>Die Form habe ich zu den automatisch zuerstellenden Forms in den Optionen hinzugefügt. Mir ist nur noch nicht ganz klar, warum das so besser ist.<br />
Achja außerdem öffnet sich die Form bei mir beim zweiten mal plötzlich und ohne den typischen vista-schwung (ja ich habe vista). Kann man das irgendwie noch anders schließen als Hide?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205963/unkontrollierte-ungewollte-pointer-deklaration</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 22:00:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205963.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Feb 2008 19:54:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unkontrollierte&#x5C;ungewollte Pointer deklaration on Tue, 19 Feb 2008 20:39:54 GMT]]></title><description><![CDATA[<p>Hi Leute,<br />
ich habe ein Problem mit meiner doppelt verketteten Liste. Anfügen und bearbeiten ist alles kein Ding, aber in einem Fall schreibt das Programm den vorgaenger-Pointer des allerersten Objektes von Null auf irgendeine andere idiotische Adresse um.<br />
Also diesen Pointer:<br />
falsch&lt;-Objekt-&gt;&lt;-Objekt-&gt;Null</p>
<p>Alle anderen Pointer sitzen völlig korrekt.<br />
Nun tritt dieser Fall nur ein, wenn der Benutzer &quot;Starten&quot; drückt, die Verarbeitung beginnt (die liste wird nicht verändert, sie wird nur rumgeschoben) und beendet. Möchte man nun darauffolgend Einstellungen in der Liste ändern, versucht er noch richtig die Lister herunterzuzaehlen...</p>
<pre><code class="language-cpp">while(liste-&gt;vorgaenger != NULL) 
   liste = liste-&gt;vorgaenger;
</code></pre>
<p>Da aber der Pointer des ersten Objektes auf eine falsche Adresse zeigt, wirft das Programm irgendwann einen Fehler aus.</p>
<p>So, ich hoffe ihr versteht mein Problem. Viel code konnte ich nicht zeigen, wird nichts bringen. Habe alles durchgetestet. Der Code selber verändert nichts mehr an Pointern.<br />
Vielleicht liegt es daran das die Liste public ist und ich sie bei der &quot;Verarbeitung&quot; in einer anderen Klasse verwende?</p>
<p>Jede Antwort hilft, helft :).<br />
Gruß icestar</p>
<p>/////////////<br />
UPDATE<br />
/////////////</p>
<p>Habe gerade herausgefunden das es an dem Aufruf einer Form liegt. Wie mir mal zu Ohren gekommen ist sollte man keine manuelle Instanz für eine Form anlegen.<br />
Habe ich gemacht und tatsächlich sind die Pointer nun alle i.O.<br />
Hier mal der Code mit den nun auskommentierten Zeilen</p>
<pre><code class="language-cpp">//Optionen = new TOptionen(Application);

	if (Optionen-&gt;ShowModal() == ID_OK)
	{
		ListeRunterZaehlen();
		VariablenDerListeZuordnen(Anker);
		ListeAktualisieren();
	}

//Optionen-&gt;Hide();
//delete Optionen;
</code></pre>
<p>Die Form habe ich zu den automatisch zuerstellenden Forms in den Optionen hinzugefügt. Mir ist nur noch nicht ganz klar, warum das so besser ist.<br />
Achja außerdem öffnet sich die Form bei mir beim zweiten mal plötzlich und ohne den typischen vista-schwung (ja ich habe vista). Kann man das irgendwie noch anders schließen als Hide?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459101</guid><dc:creator><![CDATA[icestar05]]></dc:creator><pubDate>Tue, 19 Feb 2008 20:39:54 GMT</pubDate></item></channel></rss>