<?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[Löschen von TObject]]></title><description><![CDATA[<p>Hallo,<br />
*<br />
ich kann mir vorstellen das es so eine Frage schon mal gab, aber leider habe ich über die Momentanen Suchmöglichkeiten nichts gefunden.<br />
*<br />
Aber kommen wir mal zum eigentlichen Problem:</p>
<p>Ich fülle eine ComboBox mit Strings aus einer Datenbank. Für die weitere Verarbeitung brauche ich den zum String gehörenden ID Wert des Datensatzes.<br />
Das schaut das jetzt aus:</p>
<pre><code class="language-cpp">while (!Form1-&gt;Query1-&gt;Eof)
{ myComboBox-&gt;Items-&gt;AddObject(
          Form1-&gt;Query1-&gt;FieldByName(&quot;NAME&quot;)-&gt;AsString + &quot;, &quot; +
          Form1-&gt;Query1-&gt;FieldByName(&quot;NAME2&quot;)-&gt;AsString,
          (TObject *)Form1-&gt;Query1-&gt;FieldByName(&quot;ID&quot;)-&gt;AsInteger);
  Form1-&gt;Query1-&gt;Next();
}
</code></pre>
<p>Nun muß ich diese TObjects ja auch wieder löschen. So habe ich es unter anderem versucht:</p>
<pre><code class="language-cpp">for (int i=0;i&lt;myComboBox-&gt;Items-&gt;Count;i++)
   delete myComboBox-&gt;Items-&gt;Objects[i];
</code></pre>
<p>Das Ergebnis: Zugriffsverletzungen. Ich habe auch mit free() nichts erreicht und bin so langsam am Verzeifeln.</p>
<p>Ich glaube das ich auf einem grundsätzlichen Holzweg.</p>
<p>Gruß<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/79256/löschen-von-tobject</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 00:58:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79256.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Jul 2004 09:42:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 09:42:57 GMT]]></title><description><![CDATA[<p>Hallo,<br />
*<br />
ich kann mir vorstellen das es so eine Frage schon mal gab, aber leider habe ich über die Momentanen Suchmöglichkeiten nichts gefunden.<br />
*<br />
Aber kommen wir mal zum eigentlichen Problem:</p>
<p>Ich fülle eine ComboBox mit Strings aus einer Datenbank. Für die weitere Verarbeitung brauche ich den zum String gehörenden ID Wert des Datensatzes.<br />
Das schaut das jetzt aus:</p>
<pre><code class="language-cpp">while (!Form1-&gt;Query1-&gt;Eof)
{ myComboBox-&gt;Items-&gt;AddObject(
          Form1-&gt;Query1-&gt;FieldByName(&quot;NAME&quot;)-&gt;AsString + &quot;, &quot; +
          Form1-&gt;Query1-&gt;FieldByName(&quot;NAME2&quot;)-&gt;AsString,
          (TObject *)Form1-&gt;Query1-&gt;FieldByName(&quot;ID&quot;)-&gt;AsInteger);
  Form1-&gt;Query1-&gt;Next();
}
</code></pre>
<p>Nun muß ich diese TObjects ja auch wieder löschen. So habe ich es unter anderem versucht:</p>
<pre><code class="language-cpp">for (int i=0;i&lt;myComboBox-&gt;Items-&gt;Count;i++)
   delete myComboBox-&gt;Items-&gt;Objects[i];
</code></pre>
<p>Das Ergebnis: Zugriffsverletzungen. Ich habe auch mit free() nichts erreicht und bin so langsam am Verzeifeln.</p>
<p>Ich glaube das ich auf einem grundsätzlichen Holzweg.</p>
<p>Gruß<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556683</guid><dc:creator><![CDATA[DMarko]]></dc:creator><pubDate>Fri, 09 Jul 2004 09:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 09:52:53 GMT]]></title><description><![CDATA[<p>Ein paar rhetorische Fragen:<br />
Hast du irgendwo mit <strong>new</strong> Speicher für die Objekte reserviert?<br />
Was passiert, wenn du versuchst, Speicher freizugeben, den du gar nicht reserviert hattest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556692</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 09 Jul 2004 09:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 10:44:10 GMT]]></title><description><![CDATA[<p>Jansen schrieb:</p>
<blockquote>
<p>Hast du irgendwo mit <strong>new</strong> Speicher für die Objekte reserviert?</p>
</blockquote>
<p><strong>Nein</strong></p>
<p>Jansen schrieb:</p>
<blockquote>
<p>Was passiert, wenn du versuchst, Speicher freizugeben, den du gar nicht reserviert hattest?</p>
</blockquote>
<p><strong>Zugriffsverletzungen</strong></p>
<p><strong>Autsch!</strong><br />
Und siehe da, da wo ich mit <strong>new</strong> AnsiStrings erzeuge und ranhänge klappts auch mit dem <strong>delete</strong>.</p>
<p>Danke für Deine <em>rhetorische Fragen</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/556721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556721</guid><dc:creator><![CDATA[DMarko]]></dc:creator><pubDate>Fri, 09 Jul 2004 10:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 12:21:17 GMT]]></title><description><![CDATA[<p>Ich glaube, du hast die falschen Schlüsse gezogen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Du musst nicht auf <em>new</em> umstellen, sondern einfach auf das <em>delete</em> verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556824</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 09 Jul 2004 12:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 13:06:04 GMT]]></title><description><![CDATA[<p>Jansen schrieb:</p>
<blockquote>
<p>Ich glaube, du hast die falschen Schlüsse gezogen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Du musst nicht auf <em>new</em> umstellen, sondern einfach auf das <em>delete</em> verzichten.</p>
</blockquote>
<p>Nein, nein... Habs schon richtig verstanden. Ich hatte an einer anderen Stelle noch so einen Konstrukt mit new verwedet, bei <em>dem</em> klappt auch das delete.<br />
Den werd ich aber auch demnächst mal umbasteln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556872</guid><dc:creator><![CDATA[DMarko]]></dc:creator><pubDate>Fri, 09 Jul 2004 13:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 14:48:30 GMT]]></title><description><![CDATA[<p>Die Objekte gehören Deiner Query1 und die Query1 gehört der Form. die VCL kümmert sich selber darum, Du mußt da nichts azfräumen. Also nochmal allgemein gesprochen, alles was Du auf eine Form oder sonstige Komponente per Maus klick ablegst wird vom Besitzerobjekt aufgeräumt.</p>
<p>Gruß Michel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556917</guid><dc:creator><![CDATA[Michel-RT]]></dc:creator><pubDate>Fri, 09 Jul 2004 14:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 15:06:54 GMT]]></title><description><![CDATA[<p>@Michel: Das ist zwar richtig, nur benutzt DMarko hier die Rückgabewerte mehrerer Funktionen.</p>
<pre><code class="language-cpp">Form1-&gt;Query1-&gt;FieldByName(&quot;NAME&quot;)-&gt;AsString + &quot;, &quot; + Form1-&gt;Query1-&gt;FieldByName(&quot;NAME2&quot;)-&gt;AsString
</code></pre>
<p>Dieser Teil liefert ein Stack-Objekt, genau so wie dieser Teil:</p>
<pre><code class="language-cpp">Form1-&gt;Query1-&gt;FieldByName(&quot;ID&quot;)-&gt;AsInteger)
</code></pre>
<p>Die räumen sich selber auf, sobald der Scope verlassen wird. Deshalb auch die AVs. Auch die Tatsache, das sein Programm noch richtig funktionierte war mehr Zufall als sonst was. Wenn er nun aber mittels new AnsiString(...seine Stringerstellung...); ausführt, bekommt er als Resultat ein wunderschönes Heap-Objekt welches genau das macht was er erwartet...</p>
<p>Musste auch 3 mal hinschauen, bis ich sah das Jansen hier wohl falsche Schlüsse gezogen hat (o;</p>
<p>EDIT: Was mir allerdings noch unklar ist: Wieso führst du, Marko einen delete auf die ID aus? Theoretisch könntest du auch einfach die ID wie gehabt verwenden und einfach auf das Delete verzichten?...mir fällt grad auf ich hab da wohl selber auch was falsch interpretiert (o:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556929</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Fri, 09 Jul 2004 15:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 15:26:47 GMT]]></title><description><![CDATA[<p>DMarko schrieb:</p>
<blockquote>
<pre><code class="language-cpp">(TObject *)Form1-&gt;Query1-&gt;FieldByName(&quot;ID&quot;)-&gt;AsInteger;
</code></pre>
</blockquote>
<p>Das <em>das</em> funktioniert wundert mich eigentlich viel mehr. Einen <strong>int</strong> nach TObject***** casten?????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556962</guid><dc:creator><![CDATA[zufaulzumeinloggen]]></dc:creator><pubDate>Fri, 09 Jul 2004 15:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Fri, 09 Jul 2004 15:29:59 GMT]]></title><description><![CDATA[<p>Klar geht das.... ein handelsüblicher reinterpret_cast (in C++) oder eben C Cast lässt so zimlich alles zu.</p>
<p>Ein Cast sagt ja nix anderes als &quot;lass ma, lieber Compiler, ich weiss schon was ich tu&quot;...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556970</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Fri, 09 Jul 2004 15:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von TObject on Sat, 10 Jul 2004 11:12:13 GMT]]></title><description><![CDATA[<p>Öhm,</p>
<p>verstehe ich was nicht oder lauft Ihr alle in die falsche Richtung?</p>
<p>Das spannende an der Sache ist die Zeile<br />
[cpp]<br />
myComboBox-&gt;Items-&gt;Add<strong>Object</strong>(Sting s, TObject*);<br />
[/cpp]</p>
<p>Das hängt an einen AnsiSting ein TObject* an. Und nun war meine Frage halt nur wie ich diese Objects wieder löschen müß was ich das im Man so gelesen hatte.</p>
<p>Jansen hatte schon recht. Da ich nie Speicher mit <strong>new</strong> reserviert habe, mußte ich den auch nicht wieder freigeben.</p>
<p>Das ist schon das ganze Geheimis. Das TQuery hat herzlich wenig damit zu tun, es liefert mir ja nur den Sting bzw den int.<br />
Das sich das TQuery von selber aufräumt ist mir schon klar. Sonst hätte ich ca 10.000 Lecks in meinem Proggi <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Und der Genosse Codeguard meckert auch nicht...</p>
<p>Gruß und danke<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/557359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/557359</guid><dc:creator><![CDATA[DMarko]]></dc:creator><pubDate>Sat, 10 Jul 2004 11:12:13 GMT</pubDate></item></channel></rss>