<?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[Felder in ListView Komponente]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>ich habe gestern eine ListView Komponente meinem Projekt hinzugefügt:</p>
<p><a href="http://www.fragthe.net/download.php?id=17327" rel="nofollow">http://www.fragthe.net/download.php?id=17327</a></p>
<p>Ich fülle bisher die ListView Komponente mit folgendem Code:</p>
<pre><code class="language-cpp">x = ListView1-&gt;Items-&gt;Add();

           x-&gt;Caption = listnumber++;     //ID als Listindex

           if(player-&gt;Strings[e + 1].AnsiPos(&quot;playername_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e + 1]);  //Name
           else
           x-&gt;SubItems-&gt;Add(&quot;n.a.&quot;);

           if(player-&gt;Strings[e + 3].AnsiPos(&quot;score_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e + 3]); //Score
           else
           x-&gt;SubItems-&gt;Add(&quot;0&quot;);

           if (player-&gt;Strings[e - 3].AnsiPos(&quot;kills_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e - 3]);   //Kills
           else
           x-&gt;SubItems-&gt;Add(&quot;0&quot;);

           if (player-&gt;Strings[e - 7].AnsiPos(&quot;deaths_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e - 7]); //Death
           else
           x-&gt;SubItems-&gt;Add(&quot;0&quot;);
...........
.........................
.............................................
</code></pre>
<p>Wie kann ich an eine ganaue Spaltenposition einer bestimmten Zeile einen String einfügen ? So zusagen als genaue Spalten und Zeilenposition und nicht so sequenziell wie mein erster Versuch <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="😉"
    /> Ich habe leider noch nichts brauchbares an Tutorial gefunden wo das erklärt wird</p>
<p>Ich bin euch wie immer Super dankbar !</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/90171/felder-in-listview-komponente</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 01:13:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/90171.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Oct 2004 20:59:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Felder in ListView Komponente on Tue, 26 Oct 2004 21:04:27 GMT]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>ich habe gestern eine ListView Komponente meinem Projekt hinzugefügt:</p>
<p><a href="http://www.fragthe.net/download.php?id=17327" rel="nofollow">http://www.fragthe.net/download.php?id=17327</a></p>
<p>Ich fülle bisher die ListView Komponente mit folgendem Code:</p>
<pre><code class="language-cpp">x = ListView1-&gt;Items-&gt;Add();

           x-&gt;Caption = listnumber++;     //ID als Listindex

           if(player-&gt;Strings[e + 1].AnsiPos(&quot;playername_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e + 1]);  //Name
           else
           x-&gt;SubItems-&gt;Add(&quot;n.a.&quot;);

           if(player-&gt;Strings[e + 3].AnsiPos(&quot;score_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e + 3]); //Score
           else
           x-&gt;SubItems-&gt;Add(&quot;0&quot;);

           if (player-&gt;Strings[e - 3].AnsiPos(&quot;kills_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e - 3]);   //Kills
           else
           x-&gt;SubItems-&gt;Add(&quot;0&quot;);

           if (player-&gt;Strings[e - 7].AnsiPos(&quot;deaths_&quot;) != 1)
           x-&gt;SubItems-&gt;Add(player-&gt;Strings[e - 7]); //Death
           else
           x-&gt;SubItems-&gt;Add(&quot;0&quot;);
...........
.........................
.............................................
</code></pre>
<p>Wie kann ich an eine ganaue Spaltenposition einer bestimmten Zeile einen String einfügen ? So zusagen als genaue Spalten und Zeilenposition und nicht so sequenziell wie mein erster Versuch <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="😉"
    /> Ich habe leider noch nichts brauchbares an Tutorial gefunden wo das erklärt wird</p>
<p>Ich bin euch wie immer Super dankbar !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/638315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638315</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Tue, 26 Oct 2004 21:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Wed, 27 Oct 2004 08:30:41 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>du kannst doch mit dem Index der Items und der SubItems auf spezielle Spalten zugreifen!</p>
<pre><code class="language-cpp">//Zugriff auf die verschiedenen des Items mit dem Index 'ID'

//Erste Spalte ID
ListView-&gt;Items-&gt;Item[ID]-&gt;Caption = ...

//Zweite Spalte Playername
ListView-&gt;Items-&gt;Item[ID]-&gt;SubItems-&gt;Strings[0] = ...;

//Dritte Spalte Score
ListView-&gt;Items-&gt;Item[ID]-&gt;SubItems-&gt;Strings[1] = ...;

//usw.
</code></pre>
<p>Müsste eigentlich so klappen!!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/638474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638474</guid><dc:creator><![CDATA[xDannyOx]]></dc:creator><pubDate>Wed, 27 Oct 2004 08:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Wed, 27 Oct 2004 08:02:11 GMT]]></title><description><![CDATA[<p>Danke ! ich werds gleich mal ausführlich Testen wenn der Chef weg ist <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>
]]></description><link>https://www.c-plusplus.net/forum/post/638495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638495</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Wed, 27 Oct 2004 08:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Wed, 27 Oct 2004 15:32:39 GMT]]></title><description><![CDATA[<p>Hab das hier mal ausprobiert, jedoch bekomme ich aus für mich unerklärlichen Gründen eine Fehlermeldung (EStringList Error,ListIndex out of Bound(-3)) und weiß mir absolut keinen Rat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> wäre nett wenn mich jemand auf meine Schlampereien aufmerksam machen könnte.</p>
<pre><code class="language-cpp">if(value == true)   //Wenn die Liste fertig empfangen wurde
    {

        int rownumber = -1;

        ListView1-&gt;Clear();   //säubern alter Einträge

        ListView1-&gt;Items-&gt;Add();

        for (e = 0; e &lt; player-&gt;Count; e++)    //Durch Stringliste iterieren
       {

          if(player-&gt;Strings[e].AnsiPos(&quot;deaths_&quot;) == 1)   //Neuen Spieler in Liste erkennen und ID brechnen
          {
           rownumber++;
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;Caption = rownumber;
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1]; //Death
          }

           if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[1] = player-&gt;Strings[e + 1];  //Name

           if(player-&gt;Strings[e].AnsiPos(&quot;score_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[2] = player-&gt;Strings[e + 1]; //Score

           if(player-&gt;Strings[e].AnsiPos(&quot;kills_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[3] = player-&gt;Strings[e + 1];  //Kills

           if (player-&gt;Strings[e].AnsiPos(&quot;ping_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[4] = player-&gt;Strings[e + 1]; //Ping

           if (player-&gt;Strings[e].AnsiPos(&quot;team_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[5] = player-&gt;Strings[e + 1]; //Team

           if (player-&gt;Strings[e].AnsiPos(&quot;keyhash_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[6] = player-&gt;Strings[e + 1]; //Hashkey

       }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/638878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638878</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Wed, 27 Oct 2004 15:32:39 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 06:25:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>du löschst mit dem Aufruf von clear() alle Einträge des ListViews! Danach addierst du mit Add <strong>einen</strong> Eintrag!</p>
<p>Dann in der for-Schleif besteht die Möglichkeit, dass 2 Spieler oder mehr vorhanden sind. Und du ab dem 2. Spieler auf einen ListView-Eintrag zugreifst, der gar nicht existiert! Daher die Meldung 'ListIndex out of bounds'!</p>
<p>Probier mal für jeden Spieler auch nen ListView-Eintrag zu addieren!!!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639088</guid><dc:creator><![CDATA[xDannyOx]]></dc:creator><pubDate>Thu, 28 Oct 2004 06:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:28:00 GMT]]></title><description><![CDATA[<p>Meinst du folgendes:</p>
<pre><code class="language-cpp">if(value == true)   //Wenn die Liste fertig empfangen wurde
    {

        ListView1-&gt;Clear();   //säubern alter Einträge

        int rownumber = -1;

        for (e = 0; e &lt; player-&gt;Count; e++)    //Durch Stringliste iterieren
       {

          if(player-&gt;Strings[e].AnsiPos(&quot;deaths_&quot;) == 1)   //Neuen Spieler in Liste erkennen und Zeilennummer brechnen
          {
           rownumber++;
           ListView1-&gt;Items-&gt;Add();   //Neuer eintrag pro Player
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;Caption = rownumber + 1;
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1]; //Death
          }

           if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[1] = player-&gt;Strings[e + 1];  //Name
</code></pre>
<p>Kann man das so vertreten ? Bin mir wirklich unsicher da ich noch nie zuvor mit einer ListView gearbeitet habe. Da ich auf der Arbeit bin und nur über http 8080<br />
rauskomme kann ich es leider noch nicht Testen. Zuvor hatte ich immer ein Index Out of bound gehabt und danach woch ich das im Griff hatte ne direkte Zugriffsschutzverletzung. Ich hoffe das ihr mir die Sache mit der ListView näher bringen könnt</p>
<p>Das Programm könnt ihr hier als jpeg sehen:<br />
<a href="http://www.fragthe.net/download.php?id=17327" rel="nofollow">http://www.fragthe.net/download.php?id=17327</a></p>
<p>Die Liste die mir der Server sendet hat folgendes Format:</p>
<p>------------------------------------Player 1<br />
deaths_0<br />
3<br />
keyhash_0<br />
ca2b68e180ce9d4e49910ca92a674626<br />
kills_0<br />
12<br />
ping_0<br />
43<br />
playername_0<br />
[CNB]rokko<br />
score_0<br />
16<br />
team_0<br />
1<br />
------------------------------------Player 2<br />
deaths_1<br />
16<br />
keyhash_1<br />
aa85154aa3ed0f8b97d61416c1963477<br />
kills_1<br />
7<br />
ping_1<br />
38<br />
playername_1<br />
Hoze<br />
score_1<br />
5<br />
team_1<br />
2<br />
------------------------</p>
<p>Gruß David</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639171</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:27:07 GMT]]></title><description><![CDATA[<p>Habe gerade rausgefunden das es nur Funktioniert wenn ich im Objekt Inspektor unter Items-&gt;TListItems items + eine Anzahl von Substrings statisch anlege. Das bedeutet ich kann nur in Substrings schreiben die auch vorher definiert wurden. Wie kann ich 7 Substrings pro ListViewEintrag zur laufzeit allokieren ??<br />
Sobald eine neue Zeile beginnt reserviere ich schon mal 7 Substrings- ungefähr nach dem Prinzip</p>
<p>Ich hoffe der Rest meines oben beschriebenen Codes ist richtig. Ich tappe momentan noch voll im Dunkeln wie ich mit der ListView Komponente am besten umgehe.<br />
Ich bitte höflichst um eure Hilfe weil ich momentan keinen Plan habe wo ich am besten weitermachen soll. Vielen Dank !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639249</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:27:33 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>so in etwa müsste es gehen. Jetzt legst du für jeden Spieler einen neuen Eintrag an. Was korrekt ist! Probier es einfach mal aus, wenn du Zeit hast! Denk aber das es so funktioniert!!!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639254</guid><dc:creator><![CDATA[xDannyOx]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:31:13 GMT]]></title><description><![CDATA[<p>xDannyOx schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>so in etwa müsste es gehen. Jetzt legst du für jeden Spieler einen neuen Eintrag an. Was korrekt ist! Probier es einfach mal aus, wenn du Zeit hast! Denk aber das es so funktioniert!!!</p>
<p>Gruß</p>
</blockquote>
<p>leider nicht ganz, wenn ich auf einen Substring a la</p>
<pre><code class="language-cpp">ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1];
</code></pre>
<p>zugreife bekomme ich wieder List Index out of Bound(0) (wegen SubItems-&gt;Strings[0]). Wie allokiere ich substrings zur laufzeit und nicht statisch im Objekt Inspektor <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>
]]></description><link>https://www.c-plusplus.net/forum/post/639260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639260</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:41:10 GMT]]></title><description><![CDATA[<p>Verwurschtelst du gerade die Begriffe &quot;SubString&quot; und &quot;SubItem&quot;?</p>
<p>Ah ja, SubItems ist ne StringList. Solltest du also einfach Add verwenden können. (Falls ich jetzt richtig verstanden habe, was du willst. Ich glaube ja nicht. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/639266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639266</guid><dc:creator><![CDATA[HEZ]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:39:02 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>sorry war mein Fehler hab darauf gar nicht geachtet! Wenn du die Einträge neu anlegst, musst du natürlich auch die Substrings neu anlegen!</p>
<pre><code class="language-cpp">if(value == true)   //Wenn die Liste fertig empfangen wurde
{
     ListView1-&gt;Clear();   //säubern alter Einträge

     int rownumber = -1;

     for (e = 0; e &lt; player-&gt;Count; e++)    //Durch Stringliste iterieren
     {
          if(player-&gt;Strings[e].AnsiPos(&quot;deaths_&quot;) == 1)   //Neuen Spieler in Liste erkennen und Zeilennummer brechnen
          {
               rownumber++;
               ListView1-&gt;Items-&gt;Add();   //Neuer eintrag pro Player
               ListView1-&gt;Items-&gt;Item[rownumber]-&gt;Caption = rownumber + 1;
               ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(player-&gt;Strings[e + 1]); //Death
          }

          if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1)
          {
               ListView-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(player-&gt;Strings[e + 1]);  //Name
</code></pre>
<p>Das mit den Strings[index] geht nur wenn der Eintrag schon existiert!<br />
Sorry, war mein Fehler!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639267</guid><dc:creator><![CDATA[xDannyOx]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 10:47:50 GMT]]></title><description><![CDATA[<p>Also wäre es so am Besten ,oder ?</p>
<pre><code class="language-cpp">if(player-&gt;Strings[e].AnsiPos(&quot;deaths_&quot;) == 1)   //Neuen Spieler in Liste erkennen und ID berechnen
          {
           rownumber++;
           ListView1-&gt;Items-&gt;Add();
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;Caption = rownumber + 1;
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1]; //Death
          }

           if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1)
           {
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[1] = player-&gt;Strings[e + 1];  //Name
           }

}
</code></pre>
<p>Zwar unsauber,aber.............<br />
Ich kann leider auf den Index beim SubItem nicht verzichten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Denkt ihr das ist so ok wie oben beschrieben ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639281</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:47:50 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 11:00:29 GMT]]></title><description><![CDATA[<p>Warum verwendest Du nicht TListItem* und eine TStringList?</p>
<pre><code class="language-cpp">ListView1-&gt;Items-&gt;Clear();
TListItem* tli;
TStringList* tsl = new TStringList();

// für alle hinzuzufügenden Items
tsl-&gt;Clear();
tli = ListView1-&gt;Items-&gt;Add();
tli-&gt;Caption = &quot;xxx&quot;;
tsl-&gt;Add(&quot;yyy&quot;);  // alle Subitems der Stringliste hinzufügen
tsl-&gt;Add(&quot;zzz&quot;);
tli-&gt;SubItems = tsl; // Subitems aus Stringliste zuweisen

// nicht vergessen die StringList am Schluß wieder freizugeben
delete tsl
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/639306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639306</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 28 Oct 2004 11:00:29 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Thu, 28 Oct 2004 11:13:07 GMT]]></title><description><![CDATA[<p>@ Joe, genau in diesem Prinzip war mein erster Versuch, wie man an dem jpeg erkennt funktioniert es auch damit solange der Server die liste korrekt sendet.<br />
Das heisst wenn ein Eintrag fehlt hilft mir das sequenzielle durchgehen nichts mehr. Ohne Positionen und AnsiPos bin ich aufgeschmissen</p>
<p>Was haltet ihr von diesem Quick and dirty Beispiel ? ist zwar absolut unsauber aber praktikable denk ich mal:</p>
<pre><code class="language-cpp">for (e = 0; e &lt; player-&gt;Count; e++)    //Durch Stringliste iterieren
       {

          if(player-&gt;Strings[e].AnsiPos(&quot;deaths_&quot;) == 1)   //Neuen Spieler in Liste erkennen und ID berechnen
          {
            rownumber++;
            ListView1-&gt;Items-&gt;Add();
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;Caption = rownumber + 1;

            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);

            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1]; //Death
           }

           if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[1] = player-&gt;Strings[e + 1];  //Name

           if(player-&gt;Strings[e].AnsiPos(&quot;score_&quot;) == 1)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[2] = player-&gt;Strings[e + 1]; //Score
</code></pre>
<p>EDIT: Ok, Joe, jetzt habe ich verstanden was du meinst, vergiss den Komentar oben. Vielen Dank euch allen ! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/639322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639322</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Thu, 28 Oct 2004 11:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 08:45:55 GMT]]></title><description><![CDATA[<p>Nun habe ich ein ganz kurioses Problem. Der Quelltext oben funktioniert bei 50,30 ,20 Serveranfragen nur bei manchen Server wirft er eine AccessViolation. Habe rausgefunden das er eine Accessviolation nur dann auslöst wenn ich die Stringliste player mit player-&gt;Clear() vor jedem erneuten durchlauf lösche. wenn ich player-&gt;Clear weglasse läuft die Abfrage bei allen 1500 Server wie geschmiert.<br />
Ist halt klar das die Sringliste &quot;player&quot; pro Server wächst und wächst.</p>
<p>Um die Lebensdauer über eine Funktion hinaus zu erhöhen habe ich die Stringliste global angelegt. Ich weiß das Globale Variablen nicht toll sind und in einer Klasse besser aufgehoben wären ,aber es funktioniert ja auch mal so zum Test.<br />
Leider gibt es ja auch nen dicken Fehler wenn ich die Globale mit delete während der Laufzeit freigeben möchte, logisch.</p>
<p>Ich bin momentan so Hilflos das ich nicht mehr weiter weiß. Wenn doch der Code bei 50,100,150 Server problemlos die gesendete Liste auswertet und nur sporatisch bei einzelnen Server mit ner AccessViolation rausspringt. Weiß jemand Rat was ich tun kann ?? Wenn doch der Code grundliegend falsch wäre würde ich doch keine 100 Server Problemlos abfragen können, aber beim 101. oder 121. ist mit einem Schlag schluss und die Exeption wird geworfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Was kann ich da nur tun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640079</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 08:45:55 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 08:58:40 GMT]]></title><description><![CDATA[<p>Von was wird die AccessViolation den geworfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640094</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 29 Oct 2004 08:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 09:34:23 GMT]]></title><description><![CDATA[<p>@ Joe, wenn ich zu Hause bin kann ich dir die ganze Fehlermeldung mal hier Posten. Beim rausspringen makiert der Debugger mir die Zeile Blau. Wenn ich dann mit der maus drüber fahre bekomme ich einen Exxxxx Fehlercode mit einer genauen bezeichnung des Fehlers dahinter. Ich werde es später posten.</p>
<p>Vielen Dank für deine Resonanz !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640122</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 09:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 15:10:11 GMT]]></title><description><![CDATA[<p>Also, der code Guard meldet &quot;Access in invalid memory&quot; und &quot;Attempt to acces 4 bytes in 0x00000008&quot;. Egal ob Debugger Fehlermeldung und Code Guard, es taucht immer die gleiche Adresse &quot;Read of 0x00000008&quot; auf.</p>
<p>Nach einem Klick auf eine ListBox hole ich mir IP+Port aus der Zeile</p>
<pre><code class="language-cpp">void __fastcall TForm1::ListBox1Click(TObject *Sender)
{

  char buf[20];
  String data = &quot;\\status\\&quot;;
  int Size,lenght;
  String ip,iptemp = &quot;&quot;,porttemp=&quot;&quot;;

  player-&gt;Clear();

  for(int i = 0; i &lt; Form1-&gt;ListBox1-&gt;Items-&gt;Count; i++)
 {

    if(Form1-&gt;ListBox1-&gt;Selected[i])
    {

         ip = Form1-&gt;ListBox1-&gt;Items-&gt;Strings[i];

         for (int z = 1; z &lt;= ip.Length(); z++)
       {
          if (ip[z] != ':')
          {
          iptemp = iptemp + ip[z];
          }
          else
          {
            z++;
            for(int a = z;a &lt;= ip.Length();a++)
            {
             porttemp = porttemp + ip[a];
            }

            z = ip.Length();
          }
        }

        Form1-&gt;UDPStatus1-&gt;RemoteHost = iptemp;
        Form1-&gt;UDPStatus1-&gt;RemotePort = StrToInt(porttemp);
        Form1-&gt;UDPStatus1-&gt;LocalPort = StrToInt(porttemp);

        strcpy(buf,data.c_str());
        Size = sizeof(buf);
        lenght = strlen(buf);

        Form1-&gt;UDPStatus1-&gt;SendBuffer(buf,Size,lenght);

    }

  }

}
</code></pre>
<p>Dieses Ereignis wird ausgelöst wenn das UDP Socket die Daten vom Server empfängt</p>
<pre><code class="language-cpp">void __fastcall TForm1::UDPStatus1DataReceived(TComponent *Sender,
      int NumberBytes, AnsiString FromIP, int Port)
{

  if (NumberBytes&gt;-1 &amp;&amp; NumberBytes&lt;5000)
 {

    char buf[5000];
    int lenght,e;
    String data,temp = &quot;&quot;;
    bool value = false;
    int rownumber = -1;

     Form1-&gt;UDPStatus1-&gt;ReadBuffer(buf,5000,lenght);

     data = buf;

     for (int r = 1;r &lt;= strlen(data.c_str()) ;r++)
  {

     if(data[r] != '\\')
    {

       temp = temp + data[r];     //Zusammensetzen jeder Zeile

    }

     else

    {
      if (temp != &quot;&quot;)
      {
        if(temp != &quot;queryid&quot;)
        {

           if(temp.AnsiPos(&quot;final&quot;) == 1)
           {
           value = true;
           }
           else
           {

            player-&gt;Append(temp.c_str());    //Hinzufügen zu Player String Liste
            temp = &quot;&quot;;

           }
        }
      }
    }
  }

   //-------------------------------------------------------

     if(value == true)   //Wenn die Liste fertig empfangen wurde
    {

        ListView1-&gt;Clear();   //säubern aller alten Einträge

    for (e = 0; e &lt; player-&gt;Count; e++)    //Durch Stringliste iterieren
   {

          if(player-&gt;Strings[e].AnsiPos(&quot;deaths_&quot;) == 1)   //Neuen Spieler in Liste erkennen und ID berechnen
          {

            rownumber++;

            ListView1-&gt;Items-&gt;Add();

            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;Caption = rownumber + 1;
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);
            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Add(&quot;&quot;);

            ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[3] = player-&gt;Strings[e + 1]; //Death

          }

           if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1];  //Name

           if(player-&gt;Strings[e].AnsiPos(&quot;score_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[1] = player-&gt;Strings[e + 1]; //Score

           if(player-&gt;Strings[e].AnsiPos(&quot;kills_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[2] = player-&gt;Strings[e + 1];  //Kills

           if (player-&gt;Strings[e].AnsiPos(&quot;ping_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[4] = player-&gt;Strings[e + 1]; //Ping

           if (player-&gt;Strings[e].AnsiPos(&quot;team_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[5] = player-&gt;Strings[e + 1]; //Team

           if(player-&gt;Strings[e].AnsiPos(&quot;keyhash_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[6] = player-&gt;Strings[e + 1]; //Hashkey

       }

      //------------------------------------------------------

      value = false;
      Form1-&gt;Memo1-&gt;Clear();
      Form1-&gt;Memo1-&gt;Lines-&gt;AddStrings(player);

    }

  }
}
</code></pre>
<p>Wie gesagt klappt es bei einer Reihe von Server und bei manchen nicht.<br />
Der Server sendet im folgendem Format:</p>
<pre><code>\deaths_0\3\keyhash_0\ca2b68e180ce9d4e49910ca92a674626\kills_0\12\ping_0\43......
</code></pre>
<p>ich hab echt keine Ahnung warum es Access Fehler gibt. Bitte helft mir damit ich Nachts wieder schlafen kann <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>
]]></description><link>https://www.c-plusplus.net/forum/post/640456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640456</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 15:10:11 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 15:33:32 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Von was wird die AccessViolation den geworfen?</p>
</blockquote>
<p>Hi,<br />
ich schätze mal, Joe_M. meinte damit: In welcher Zeile tritt die AccessViolation auf? (Auf welcher Zeile steht der Debugger nach dem Stoppen?)</p>
<p>MfG</p>
<p>Alexander Sulfrian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640487</guid><dc:creator><![CDATA[Alexander Sulfrian]]></dc:creator><pubDate>Fri, 29 Oct 2004 15:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 16:06:13 GMT]]></title><description><![CDATA[<p>Ab folgender Zeile:</p>
<pre><code class="language-cpp">if(player-&gt;Strings[e].AnsiPos(&quot;kills_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[2] = player-&gt;Strings[e + 1];
</code></pre>
<p>Was ich merkwürdig finde ist, wenn ich player-&gt;Clear() im OnClick Ereignis weglasse das dann alles fehlerfrei läuft. Nur die Stringliste wird dann gigantisch groß. hab echt keinen Plan was das alles soll, wenn der Code so daneben wäre würde er mir doch nicht 100 Server fehlerfrei auswerten. Sporatisch steigt er bei dem ein oder anderen Server mit einer Access violation aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/640520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640520</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 16:06:13 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 16:11:03 GMT]]></title><description><![CDATA[<p>Mal ganz blöd gefragt:</p>
<pre><code class="language-cpp">if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1 &amp;&amp; ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Count &lt;= 7)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1];  //Name
</code></pre>
<p>Wie kannst du dir sicher sein, dass in der letzten Zeile e+1 in player Existiert? Schließlich leerst du ja vorher (oder sonst wann). (Wahrscheinlich Blödsinn. Aber vielleicht habe ich ja Glück und Recht. ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640524</guid><dc:creator><![CDATA[HEZ]]></dc:creator><pubDate>Fri, 29 Oct 2004 16:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 16:19:17 GMT]]></title><description><![CDATA[<p>sobald AnsiPos(&quot;playername_&quot;) in der Stringliste vorkommt müsste logischerweiße ja auch der Name folgen,also [e + 1]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640539</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 16:19:17 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 16:32:28 GMT]]></title><description><![CDATA[<p>&quot;sollte&quot;. Egal. Tut es das auch?! (Sorry, bei dem Chaos finde ich die richtige Exceptionmeldung nicht mehr...)</p>
<p>Wenn die letzte Zeile von player playername_, score_, kill_, etc. enthält, kracht es auf jeden Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640544</guid><dc:creator><![CDATA[HEZ]]></dc:creator><pubDate>Fri, 29 Oct 2004 16:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 16:48:33 GMT]]></title><description><![CDATA[<p>Du hast auf jeden Fall recht, aber warum bekomme ich dann keinen Index out of bound Error ? oder hab ich da was falsch verstanden ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640553</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 16:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 17:04:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if(player-&gt;Strings[e].AnsiPos(&quot;playername_&quot;) == 1 &amp;&amp; e + 1 &lt;= player-&gt;Count)
           ListView1-&gt;Items-&gt;Item[rownumber]-&gt;SubItems-&gt;Strings[0] = player-&gt;Strings[e + 1];  //Name
</code></pre>
<p>hilft da auch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/640558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640558</guid><dc:creator><![CDATA[Zero01]]></dc:creator><pubDate>Fri, 29 Oct 2004 17:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in ListView Komponente on Fri, 29 Oct 2004 17:53:32 GMT]]></title><description><![CDATA[<p>Ich glaube, (e+1) muss KLEINER als Count() sein...</p>
<p>Ich dachte, dein Problem WAR ein OutOfBoundsError... <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="🙂"
    /> War aber wohl eine AV...</p>
<p>Ausserdem fängst du nicht ab: Wenn warum auch immer &quot;_deaths&quot; einmal ausfällt, greifst du auf SubItems zu, die es nicht gibt, oder? <em>//Edit: Ach so, fängst du ja ab.</em> <em>//Edit2: Nö, doch nicht. &quot;&lt;=7&quot;?! Was soll das denn? Hast du Angst, du hast mehr als 7 Subitems?</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/640586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640586</guid><dc:creator><![CDATA[HEZ]]></dc:creator><pubDate>Fri, 29 Oct 2004 17:53:32 GMT</pubDate></item></channel></rss>