<?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[Problem beim löschen von Komonenten im Vector]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe ein Vector vom Typ Gruppe:</p>
<pre><code class="language-cpp">vector&lt;Gruppe&gt; Gruppen;
</code></pre>
<pre><code class="language-cpp">struct Gruppe
{
  TPanel *Panel;
  TLabel *lblTitel;
  TComboBox *cbTyp;
  bool selected;
  vector&lt;Bedinung&gt; Bedinungen;
};
</code></pre>
<p>Gruppe beinhaltet ja wiederrum ein Vector vom Typ Bedinung:</p>
<pre><code class="language-cpp">struct Bedinung
{
  TPanel *Panel;
  TComboBox *cbSpalte;
  TComboBox *cbOperator;
  TEdit *txtString;
  TLabel *lblTitel;
  bool selected;
};
</code></pre>
<p>Ich erstelle die ganzen KOmponenten mit <strong>new</strong>!</p>
<p>Nun muss ich sie ja auch wieder löschen (sonst belegen die doch auf ewig speicher oder)</p>
<p>das geht nur leider nicht wie sonst mit:</p>
<pre><code class="language-cpp">delete Gruppen[0].Bedinungen[0].Panel;
</code></pre>
<p>Das einzigste was &quot;funktioniert&quot; ist:</p>
<pre><code class="language-cpp">delete &amp;Gruppen[0].Bedinungen[0].Panel;
</code></pre>
<p>wird das denn dann auch wirklich gelöscht?</p>
<p>Ich habe das Gefühl als wenn das Panel weiterhin auf dem Form zu sehen ist! oder wird da was nicht neu gezeichnet?</p>
<p><strong>Also die eigentliche Frage: Wird das so 100% gelöscht?</strong></p>
<p>THX</p>
<p>Dagsta</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/106050/problem-beim-löschen-von-komonenten-im-vector</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:11:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/106050.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Apr 2005 14:57:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Tue, 05 Apr 2005 14:57:40 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe ein Vector vom Typ Gruppe:</p>
<pre><code class="language-cpp">vector&lt;Gruppe&gt; Gruppen;
</code></pre>
<pre><code class="language-cpp">struct Gruppe
{
  TPanel *Panel;
  TLabel *lblTitel;
  TComboBox *cbTyp;
  bool selected;
  vector&lt;Bedinung&gt; Bedinungen;
};
</code></pre>
<p>Gruppe beinhaltet ja wiederrum ein Vector vom Typ Bedinung:</p>
<pre><code class="language-cpp">struct Bedinung
{
  TPanel *Panel;
  TComboBox *cbSpalte;
  TComboBox *cbOperator;
  TEdit *txtString;
  TLabel *lblTitel;
  bool selected;
};
</code></pre>
<p>Ich erstelle die ganzen KOmponenten mit <strong>new</strong>!</p>
<p>Nun muss ich sie ja auch wieder löschen (sonst belegen die doch auf ewig speicher oder)</p>
<p>das geht nur leider nicht wie sonst mit:</p>
<pre><code class="language-cpp">delete Gruppen[0].Bedinungen[0].Panel;
</code></pre>
<p>Das einzigste was &quot;funktioniert&quot; ist:</p>
<pre><code class="language-cpp">delete &amp;Gruppen[0].Bedinungen[0].Panel;
</code></pre>
<p>wird das denn dann auch wirklich gelöscht?</p>
<p>Ich habe das Gefühl als wenn das Panel weiterhin auf dem Form zu sehen ist! oder wird da was nicht neu gezeichnet?</p>
<p><strong>Also die eigentliche Frage: Wird das so 100% gelöscht?</strong></p>
<p>THX</p>
<p>Dagsta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760407</guid><dc:creator><![CDATA[dagsta]]></dc:creator><pubDate>Tue, 05 Apr 2005 14:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Tue, 05 Apr 2005 15:02:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>schreib dir für die beiden structs doch passende Konstruktoren und wichtiger noch Destruktoren. Dann kannst du sicher sein.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760410</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 05 Apr 2005 15:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Tue, 05 Apr 2005 15:11:18 GMT]]></title><description><![CDATA[<p>Kann ein Struct einen Destruktoren haben?</p>
<p>Hier nochmal ein Beispiel wie ich das ganze lösche:</p>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; Form3-&gt;Gruppen.size(); i++)
  {
    delete Form3-&gt;Gruppen[i].lblTitel;  //Hier klappt normales Delete
    delete Form3-&gt;Gruppen[i].cbTyp;
    delete Form3-&gt;Gruppen[i].Panel;
    for(unsigned int x = 0; x &lt; Form3-&gt;Gruppen[i].Bedinungen.size(); x++)
    {
      delete &amp;Form3-&gt;Gruppen[i].Bedinungen[x].cbSpalte;  //Hier nicht mehr
      delete &amp;Form3-&gt;Gruppen[i].Bedinungen[x].cbOperator;
      delete &amp;Form3-&gt;Gruppen[i].Bedinungen[x].txtString;
      delete &amp;Form3-&gt;Gruppen[i].Bedinungen[x].lblTitel;
      delete &amp;Form3-&gt;Gruppen[i].Bedinungen[x].Panel;
    }
    Form3-&gt;Gruppen[i].Bedinungen.clear();
    Form3-&gt;Gruppen[i].Bedinungen.resize(0);
  }
  while(Form3-&gt;Gruppen.size() &gt; 0)
  {
    Form3-&gt;Gruppen.pop_back();
  }
</code></pre>
<p>Hier werden alle gelöscht ist aber nicht immer so!</p>
<p>WIe könnte ich mir den so einen Destruktor (bzw. Konstruktor wäre auch praktisch) basteln ohne das ganze in eine Klasse zu kapseln</p>
<p>THX</p>
<p>Dagsta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760417</guid><dc:creator><![CDATA[dagsta]]></dc:creator><pubDate>Tue, 05 Apr 2005 15:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Tue, 05 Apr 2005 16:36:52 GMT]]></title><description><![CDATA[<p>Du kannst auch einer Struktur Konstruktoren, Destruktoren, Operatoren usw. geben, da in C++ Strukturen intern auch Klassen sind. Der einzige Unterschied ist, dass bei Strukturen alle Membervariablen per default public sind, bei Klassen aber private (wenn du es nicht explizit hinschreibst).<br />
Wenn deine VCL-Komponenten einen Owner (z.Bsp die Application) haben, kannst du das Löschen sogar weglassen, da dann der Owner dafür sorgt.<br />
Das &amp; vor deiner Variable ist beim Löschen nicht nötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760467</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 05 Apr 2005 16:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Tue, 05 Apr 2005 18:06:04 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Das &amp; vor deiner Variable ist beim Löschen nicht nötig.</p>
</blockquote>
<p>Doch ohne lässt es sich nicht kompilieren!</p>
<p>Könnte mir vieleicht jemand mal ein Bsp. geben wie ich einen Konstruktor / de... bei Structuren erstelle?</p>
<p>THX</p>
<p>Dagsta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760563</guid><dc:creator><![CDATA[Dagsta-woanders]]></dc:creator><pubDate>Tue, 05 Apr 2005 18:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Tue, 05 Apr 2005 18:52:48 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Die Syntax ist wie bereits gesagt genauso wie bei Klassen. Den Destruktor könnte man also so erstellen</p>
<pre><code class="language-cpp">struct Bedinung
{
  TPanel *Panel;
  TComboBox *cbSpalte;
  TComboBox *cbOperator;
  TEdit *txtString;
  TLabel *lblTitel;
  bool selected;
  ~Bedingung();
};

Bedingung::~Bedingung()
{
  delete Panel;
  delete cbSpalte;
  delete cbOperator;
  delete txtString;
  delete lblTitel;
  }
</code></pre>
<p>Allerdings solltest du dir noch mal deine Struktur anschauen.<br />
Bedingung ist ja unter Gruppen untergeordnet. Ich gehe mal davon aus, das auch die Controls aus Bedingung unter die Controls von Gruppen untergeordnet sind.<br />
Wenn du nicht nur Parent, sondern auch Owner setzt, löscht du bereits mit dem obersten Control (also wahrscheilich das Panel aus Gruppen) automatisch alle untergeordneten Controls. Wenn du dann noch mal manuell löscht, kommt ein Zugriffsfehler. Also uüberleg dir genau, wann du was löschen must und was nicht.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760598</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 05 Apr 2005 18:52:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim löschen von Komonenten im Vector on Wed, 06 Apr 2005 07:36:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1045">@Dagsta</a><br />
Welche Fehlermeldungen liefert denn dein Compiler wenn du das &amp; davor weglässt?<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a><br />
Das die unteren Controls ungültig werden wenn man das obere Panel löscht, stimmt aber nur wenn das Panel auch der Owner ist. Vielleicht sollte uns dagsta auch mal zeigen wie er die Controls erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/760834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/760834</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 06 Apr 2005 07:36:49 GMT</pubDate></item></channel></rss>