<?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[TList - Items]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe wieder mal ein (einfaches) Problem, bei dem ihr mir sicher weiterhelfen könnt.</p>
<p>In meiner Anwendung (mit BCB6 entwickelt) speichere ich mehrere Objekte (logischerweise mit unterschiedlichen Daten) in einer <strong>TList</strong>-Komponente.<br />
Dazu benutze ich natürlich die Methode &quot;<strong>Add</strong>(void*)&quot;. Dies scheint auch zu funktionieren, doch das Problem liegt anschliessend im Zugriff auf diese Liste.</p>
<p>Wenn ich eine Schleife mache über alle Items in TList, dann liefert mir jedes Item die gleichen Daten zurück, und zwar immer diejenigen, die beim letzten Aufruf der Methode &quot;Add&quot; hinzugefügt wurden.</p>
<p>Hier der Code wie ich die Daten in die Liste schreibe:</p>
<pre><code class="language-cpp">// lList ist der Name der TList-Komponente

    CEntryStruct *Entry = new CEntryStruct();

    for (int i = 0; i &lt; 10; i++)
    {
        // Entry wird jedes mal mit anderen Daten gefüllt
        ...
        lList-&gt;Add(Entry);
    }
</code></pre>
<p>Hier der Code wie ich versuche auf die Items zuzugreifen:</p>
<pre><code class="language-cpp">CEntryStruct *Entry;

    for (int i = 0; i &lt; lList-&gt;Count; i++)
    {
        Entry = (CEntryStruct*)lList-&gt;Items[i];
        // Daten aus Entry lesen
        ...
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/113496/tlist-items</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 09:31:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113496.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Jun 2005 13:36:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TList - Items on Thu, 23 Jun 2005 13:36:35 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe wieder mal ein (einfaches) Problem, bei dem ihr mir sicher weiterhelfen könnt.</p>
<p>In meiner Anwendung (mit BCB6 entwickelt) speichere ich mehrere Objekte (logischerweise mit unterschiedlichen Daten) in einer <strong>TList</strong>-Komponente.<br />
Dazu benutze ich natürlich die Methode &quot;<strong>Add</strong>(void*)&quot;. Dies scheint auch zu funktionieren, doch das Problem liegt anschliessend im Zugriff auf diese Liste.</p>
<p>Wenn ich eine Schleife mache über alle Items in TList, dann liefert mir jedes Item die gleichen Daten zurück, und zwar immer diejenigen, die beim letzten Aufruf der Methode &quot;Add&quot; hinzugefügt wurden.</p>
<p>Hier der Code wie ich die Daten in die Liste schreibe:</p>
<pre><code class="language-cpp">// lList ist der Name der TList-Komponente

    CEntryStruct *Entry = new CEntryStruct();

    for (int i = 0; i &lt; 10; i++)
    {
        // Entry wird jedes mal mit anderen Daten gefüllt
        ...
        lList-&gt;Add(Entry);
    }
</code></pre>
<p>Hier der Code wie ich versuche auf die Items zuzugreifen:</p>
<pre><code class="language-cpp">CEntryStruct *Entry;

    for (int i = 0; i &lt; lList-&gt;Count; i++)
    {
        Entry = (CEntryStruct*)lList-&gt;Items[i];
        // Daten aus Entry lesen
        ...
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/815635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/815635</guid><dc:creator><![CDATA[Anfänger²]]></dc:creator><pubDate>Thu, 23 Jun 2005 13:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to TList - Items on Thu, 23 Jun 2005 13:41:04 GMT]]></title><description><![CDATA[<p>Probier es mal so:</p>
<pre><code class="language-cpp">// lList ist der Name der TList-Komponente 

    CEntryStruct *Entry ;

    for (int i = 0; i &lt; 10; i++) 
    { 
        Entry = new CEntryStruct(); 

        // Entry wird jedes mal mit anderen Daten gefüllt 
        ... 
        lList-&gt;Add(Entry); 
    }
</code></pre>
<p>Du mußt immer eine neue Instanz mit new erzeugen, sonst ueberschreibst Du einfach immer die alte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/815652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/815652</guid><dc:creator><![CDATA[YLIREBUS]]></dc:creator><pubDate>Thu, 23 Jun 2005 13:41:04 GMT</pubDate></item><item><title><![CDATA[Reply to TList - Items on Thu, 23 Jun 2005 13:43:16 GMT]]></title><description><![CDATA[<p>... Achso mach es lieber so:</p>
<p>for (int i = 0; i &lt; lList-&gt;Count; i++)<br />
{<br />
Entry = <em><em>dynamic_cast&lt;CEntryStruct</em>&gt;(lList-&gt;Items[i]);</em>*<br />
if(Entry)<br />
{<br />
// Daten aus Entry lesen<br />
}<br />
...<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/815656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/815656</guid><dc:creator><![CDATA[YLIREBUS]]></dc:creator><pubDate>Thu, 23 Jun 2005 13:43:16 GMT</pubDate></item><item><title><![CDATA[Reply to TList - Items on Thu, 23 Jun 2005 13:52:51 GMT]]></title><description><![CDATA[<p>Herzlichen Dank YLIREBUS, jetzt funktioniert es bestens <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>wieder mal so ein dämlicher Fehler... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/815678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/815678</guid><dc:creator><![CDATA[Anfänger²]]></dc:creator><pubDate>Thu, 23 Jun 2005 13:52:51 GMT</pubDate></item><item><title><![CDATA[Reply to TList - Items on Thu, 23 Jun 2005 14:56:02 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/630">@YLIREBUS</a><br />
TList verwaltet void* Pointer und die kannst du nicht mit dynamic_cast zurück casten. Hierfür benötigt man schon einen reinterpret_cast (oder halt den alten C-Style Cast).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/815808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/815808</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 23 Jun 2005 14:56:02 GMT</pubDate></item><item><title><![CDATA[Reply to TList - Items on Thu, 23 Jun 2005 21:07:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a></p>
<p>sorry ich mache das immer, hatte nie Probleme.<br />
Wenn es nicht funzen würde, würde es an der Stelle Kacheln.<br />
Weil man nur ein gültiges Handel bekommt, wenn es sich auch wirklich um den gekasteten Typ handelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Hier mal das Beispiel aus der Hilfe mit dem einfachen cast:</p>
<pre><code class="language-cpp">typedef struct AList

{
  int I;
  char C;
} TAList;

typedef TAList* PAList;

void __fastcall TForm1::Button1Click(TObject *Sender)

{
  PAList AStruct;
  TList *MyList = new TList;
  // fill the TList
  AStruct = new TAList;
  AStruct-&gt;I = 100;
  AStruct-&gt;C = 'Z';
  MyList-&gt;Add(AStruct);
  AStruct = new TAList;
  AStruct-&gt;I = 100;
  AStruct-&gt;C = 'X';
  MyList-&gt;Add(AStruct);

  // Liste durchlaufen und Elemente auf der Zeichenfläche 
  // einer PaintBox-Komponente ausgeben.
  int Y = 10; // Position auf der Zeichenfläche
  for (int i = 0; i &lt; MyList-&gt;Count; i++)
  {
    AStruct = (PAList) MyList-&gt;Items[i];

    PaintBox1-&gt;Canvas-&gt;TextOut(10, Y, IntToStr(AStruct-&gt;I));
    Y += 30;  // Y-Wert erneut erhöhen
    PaintBox1-&gt;Canvas-&gt;TextOut(10, Y, AStruct-&gt;C);
    Y += 30;  //Y-Wert erhöhen
  }

  // Aufräumen: Listeneinträge und Liste freigeben
  for (int i = 0; i &lt; MyList-&gt;Count; i++)
  {
    AStruct = (PAList) MyList-&gt;Items[i];
    delete AStruct;
  }
  delete MyList;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/816050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/816050</guid><dc:creator><![CDATA[YLIREBUS]]></dc:creator><pubDate>Thu, 23 Jun 2005 21:07:13 GMT</pubDate></item></channel></rss>