<?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[TClientSocket exeption bei delete]]></title><description><![CDATA[<p>Hi,</p>
<p>ich nutze in einer Klasse den TClientSocket um TCP Verbindungen aufzubauen.</p>
<p>Im Konstruktor wird der socket initialisiert:</p>
<pre><code class="language-cpp">pSocket = new TClientSocket(NULL);
   	pSocket-&gt;Active = false;
   	pSocket-&gt;ClientType = ctNonBlocking;
   	pSocket-&gt;OnConnect = pSocketConnect;
   	pSocket-&gt;OnDisconnect = pSocketDisconnect;
   	pSocket-&gt;OnError = pSocketError;
   	pSocket-&gt;OnRead = pSocketRead;
</code></pre>
<p>Im Destruktor wird die Instanz gelöscht:</p>
<pre><code class="language-cpp">delete pSocket;
    pSocket = NULL;
</code></pre>
<p>Wenn irgendein Fehler im Socket passiert (z. B.: Verbindung getrennt), wird die Funktion OnError gerufen. In dieser Funktion wird ein Flag gesetzt, woraufhin ein Task den Socket Schließt und meine Klasse löscht. Danach tritt eine Exeption auf: zugriff auf Adresse 0 nicht erlaubt. (Achso diese Exeption kommt auch nicht sofort meist erst wenn man das Mainform wieder anklickt)</p>
<p>Wenn ich den Socket im Destruktor nicht zerstöre (//delete pSocket) tritt die exeption nicht auf.</p>
<p>Woran könnte das liegen? Und wie kann ich den Socket sonst schließen wenn nicht mit delete.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205197/tclientsocket-exeption-bei-delete</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 17:25:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205197.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Feb 2008 16:20:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Mon, 11 Feb 2008 16:20:09 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich nutze in einer Klasse den TClientSocket um TCP Verbindungen aufzubauen.</p>
<p>Im Konstruktor wird der socket initialisiert:</p>
<pre><code class="language-cpp">pSocket = new TClientSocket(NULL);
   	pSocket-&gt;Active = false;
   	pSocket-&gt;ClientType = ctNonBlocking;
   	pSocket-&gt;OnConnect = pSocketConnect;
   	pSocket-&gt;OnDisconnect = pSocketDisconnect;
   	pSocket-&gt;OnError = pSocketError;
   	pSocket-&gt;OnRead = pSocketRead;
</code></pre>
<p>Im Destruktor wird die Instanz gelöscht:</p>
<pre><code class="language-cpp">delete pSocket;
    pSocket = NULL;
</code></pre>
<p>Wenn irgendein Fehler im Socket passiert (z. B.: Verbindung getrennt), wird die Funktion OnError gerufen. In dieser Funktion wird ein Flag gesetzt, woraufhin ein Task den Socket Schließt und meine Klasse löscht. Danach tritt eine Exeption auf: zugriff auf Adresse 0 nicht erlaubt. (Achso diese Exeption kommt auch nicht sofort meist erst wenn man das Mainform wieder anklickt)</p>
<p>Wenn ich den Socket im Destruktor nicht zerstöre (//delete pSocket) tritt die exeption nicht auf.</p>
<p>Woran könnte das liegen? Und wie kann ich den Socket sonst schließen wenn nicht mit delete.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453781</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Mon, 11 Feb 2008 16:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Tue, 12 Feb 2008 07:53:06 GMT]]></title><description><![CDATA[<p>Das Programm stürzt bei der Behandlung einer Message ab, da er wenn die exeption im Debugger kommt mitten in der Message bearbeitungs Schleife ist.</p>
<p>Ich frag mich jetzt wie kann ich rausfinden was das für eine Message ist?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454123</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Tue, 12 Feb 2008 07:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Tue, 12 Feb 2008 10:30:44 GMT]]></title><description><![CDATA[<p>Hallo Destiniy</p>
<p>versuchs mal auf folgende Weise.<br />
Schätze mal dass beim schliessen der Verbindung im Hintergrund<br />
noch einiges abläuft, danach darfst du erst den Socket deleten.</p>
<pre><code class="language-cpp">pSocket-&gt;Close();
  pSocket-&gt;Socket-&gt;Close();

       // z.B. 1000ms warten bis close abgeschlossen ist 
  DWORD now  = GetTickCount();
  do{ Application-&gt;ProcessMessages(); 
    }while( (GetTickCount() - now) &lt; (DWORD)1000 );

  delete pSocket;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1454230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454230</guid><dc:creator><![CDATA[nav123]]></dc:creator><pubDate>Tue, 12 Feb 2008 10:30:44 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Tue, 12 Feb 2008 15:04:01 GMT]]></title><description><![CDATA[<p>also wenn ich die Messages vorher bearbeite stürzt er dann mitten in dieser Schleife ab.</p>
<p>Genauer:</p>
<pre><code class="language-cpp">pSocket-&gt;Close();
  pSocket-&gt;Socket-&gt;Close();

  DWORD now  = GetTickCount();
 	do{
    while (::PeekMessage(&amp;msg,0,0,0,PM_REMOVE)) ::DispatchMessage(&amp;msg);
    }while( (GetTickCount() - now) &lt; (DWORD)1000 );

    delete pSocket;
    pSocket = NULL;
</code></pre>
<p>Programm stürzt genau wie vorher nach dem delete irgendwann ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454495</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Tue, 12 Feb 2008 15:04:01 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Wed, 13 Feb 2008 15:13:11 GMT]]></title><description><![CDATA[<p>hat noch jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455159</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Wed, 13 Feb 2008 15:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Thu, 14 Feb 2008 22:27:47 GMT]]></title><description><![CDATA[<p>Probier mal ein <em>Abort();</em> vor dem Löschen. Ich bilde mir ein, das mal erfolgreich zum Beenden &quot;hängender&quot; Socketverbindungen eingesetzt zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456236</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 14 Feb 2008 22:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Fri, 15 Feb 2008 10:30:49 GMT]]></title><description><![CDATA[<p>wie setze ich das Abort() ein, da Abort kein Mitglied der Socketklasse ist?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456383</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Fri, 15 Feb 2008 10:30:49 GMT</pubDate></item><item><title><![CDATA[Reply to TClientSocket exeption bei delete on Fri, 15 Feb 2008 13:03:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielleicht hängt die exeption auch mit meiner Programmstruktur zusammen:</p>
<p>ich habe eine Klasse, die im Konstructor mit new den TClientSocket erstellt und halt im Destruktor mit delete zerstört. Diese Klasse ist in einer Dll genutzt. Die Dll wiederrum wird von der GUI anwendung genutzt.</p>
<p>vielleicht gibt es durch die Dll irgendwelche Probleme?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456481</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Fri, 15 Feb 2008 13:03:53 GMT</pubDate></item></channel></rss>