<?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[Zweimal TStringList. Position von ListB muss gleich Position ListA sein]]></title><description><![CDATA[<p>sorry für den titel! <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>
<p>ich stehe vor folgendem problem.<br />
ich habe eine TStringList ListA die Sorted auf true hat und Duplicates auf DupIgnore. Die ListB hat keine dieser zwei eigenschaften gesetzt. Mein problem ist nun das ich beim hinzufügen eines string in die listen die positionen immer an gleicher stelle haben muss. Also das hinzufügen in die beiden listen geschieht synchron. Wenn A etwas hinzugefügt wird wird auch B (etwas anderes) hinzugefügt. Der index <strong>muss</strong> dann aber ebenfalls synchron sein. Da aber ListA Sorted auf true hat und Duplicates auch aktive ist, geht das ja leider nicht. Folgendes wäre die ursache:</p>
<p>a) Entweder stimmt der count nicht mehr überein da die einte duplikate nicht zulässt. oder aber..<br />
b) Die String positionen stimmen nicht mehr überein da die einte ja sortiert.</p>
<p>was soll ich tun? Ich kann glaub sowas machen:</p>
<pre><code class="language-cpp">if(ListA-&gt;Add(&quot;xyz&quot;))
{
    //ja der string wurde hinzugefügt also machs auch bei der normalen liste...
    ListB-&gt;Add(&quot;123&quot;);
}
</code></pre>
<p>dann wäre wenigstens das problem (b) gelöst mit dem synchronisierten count (also beide listen werden dann sicher gleichviele Strings haben). Doch in dieser lösung ist dann eben das String position problem nicht gelöst. Was bei ListA an 5 (war) ist nun z.b. an 3 obwohl ListB immer noch an der position 5 ist = asynchron. Interessant wäre es wenn sobald in der sortierten liste etwas verschoben (sortiert) wird, die neue(n) positionen auch der normalen liste zugewiesen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127839/zweimal-tstringlist-position-von-listb-muss-gleich-position-lista-sein</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 16:05:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127839.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Nov 2005 23:06:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sun, 27 Nov 2005 23:06:08 GMT]]></title><description><![CDATA[<p>sorry für den titel! <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>
<p>ich stehe vor folgendem problem.<br />
ich habe eine TStringList ListA die Sorted auf true hat und Duplicates auf DupIgnore. Die ListB hat keine dieser zwei eigenschaften gesetzt. Mein problem ist nun das ich beim hinzufügen eines string in die listen die positionen immer an gleicher stelle haben muss. Also das hinzufügen in die beiden listen geschieht synchron. Wenn A etwas hinzugefügt wird wird auch B (etwas anderes) hinzugefügt. Der index <strong>muss</strong> dann aber ebenfalls synchron sein. Da aber ListA Sorted auf true hat und Duplicates auch aktive ist, geht das ja leider nicht. Folgendes wäre die ursache:</p>
<p>a) Entweder stimmt der count nicht mehr überein da die einte duplikate nicht zulässt. oder aber..<br />
b) Die String positionen stimmen nicht mehr überein da die einte ja sortiert.</p>
<p>was soll ich tun? Ich kann glaub sowas machen:</p>
<pre><code class="language-cpp">if(ListA-&gt;Add(&quot;xyz&quot;))
{
    //ja der string wurde hinzugefügt also machs auch bei der normalen liste...
    ListB-&gt;Add(&quot;123&quot;);
}
</code></pre>
<p>dann wäre wenigstens das problem (b) gelöst mit dem synchronisierten count (also beide listen werden dann sicher gleichviele Strings haben). Doch in dieser lösung ist dann eben das String position problem nicht gelöst. Was bei ListA an 5 (war) ist nun z.b. an 3 obwohl ListB immer noch an der position 5 ist = asynchron. Interessant wäre es wenn sobald in der sortierten liste etwas verschoben (sortiert) wird, die neue(n) positionen auch der normalen liste zugewiesen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928699</guid><dc:creator><![CDATA[SteffenB]]></dc:creator><pubDate>Sun, 27 Nov 2005 23:06:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sun, 27 Nov 2005 23:17:10 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>so genau versteh ich jetzt nicht, warum bei gleichen Daten die beiden ListBoxen nicht auch die gleichen Einstellung bezüglich Sortierung haben sollen.</p>
<p>Aber du kannst ja den Rückgabewert von Add() benutzen</p>
<p>BCB_Hilfe zu Add() schrieb:</p>
<blockquote>
<p>Add gibt die Position des Eintrags in der Liste zurück, wobei der erste Eintrag den Index 0 hat.</p>
</blockquote>
<p>und dann mit der Methode Exchange in der zweiten ListBox den ebenfalls neuen Wert an die Position schieden, die du durch das Add bekommen hast.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928701</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 27 Nov 2005 23:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sun, 27 Nov 2005 23:45:07 GMT]]></title><description><![CDATA[<p>danke für deine hilfe. ich glaube es funktioniert wie ich es brauche. das die zweite liste nicht sortiert ist hat schon seine gründe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> es sind hald nie die gleichen werte, deswegen kann ich die zweite liste nicht sortieren lassen da es ja nicht die gleichen werte sind und somit wäre nach dem sortieren die position anderst. wenn beide listen die gleiche werte je Add bekommen, dann würde das sortieren beidener natürlich sinn machen.</p>
<p>Also gehe ich richtig der annahme das alles was nicht -1 als rückgabewert ist = ok ist und = position, ja? dann wäre z.b. (index ist vom typ int)</p>
<p>if(index &gt;= 0)</p>
<p>ein erfolgreiches adden in die sortierte liste?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928710</guid><dc:creator><![CDATA[SteffenB]]></dc:creator><pubDate>Sun, 27 Nov 2005 23:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sun, 27 Nov 2005 23:49:10 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>jawohl, genauso stehts auch in BCB-Hilfe zu Add()</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928711</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 27 Nov 2005 23:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Wed, 30 Nov 2005 19:35:47 GMT]]></title><description><![CDATA[<p>hallo. habe gerade etwas bemerkt und in der hilfe steht das:</p>
<blockquote>
<p>Hat Duplicates den Wert dupIgnore, gibt Add bei dem Versuch, einen doppelten String einzufügen, <strong>den Index des vorhandenen Eintrags</strong> zurück.</p>
</blockquote>
<p>das problem ist also das garnie -1 als rückgabewert übergeben wird <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ich brauche ja aber sowas. Ich muss wissen ob der eintrag erfolgreich war (index &gt;= 0) oder nicht erfolgreich (-1)... geht das nicht irgendwie raus zu bekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930954</guid><dc:creator><![CDATA[SteffenB]]></dc:creator><pubDate>Wed, 30 Nov 2005 19:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Wed, 30 Nov 2005 19:58:58 GMT]]></title><description><![CDATA[<p>also eine möglichkeit wäre natürlich vor dem Add() mit einer lokalen int variable den count auslesen. Ist nach dem Add() Count von der liste grösser als count, dann kann man es in die zweite liste hinzufügen. Aber ist sowas effizient?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930968</guid><dc:creator><![CDATA[SteffenB]]></dc:creator><pubDate>Wed, 30 Nov 2005 19:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Wed, 30 Nov 2005 23:13:01 GMT]]></title><description><![CDATA[<p>Dann überprüfe halt vorher z.b. mit</p>
<pre><code class="language-cpp">IndexOf
</code></pre>
<p>ob der Eintrag in der Liste vorhanden ist.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931079</guid><dc:creator><![CDATA[VergissEs]]></dc:creator><pubDate>Wed, 30 Nov 2005 23:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Fri, 02 Dec 2005 19:25:33 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>: Mir ist eben ein problem eingefallen. Das ganze mit Exchange klappt ja eigentlich insofern das in der unsortierten liste der neu hinzugefügte string nun durch exchange an die neue position gelangt, mittels des index von der sortierten liste. soweit sogut. <strong>aber</strong> da ja nun in der unsortierten liste ein exchange durchgeführt wurde und dort wo nun der neue string hinging, ein bereits vorhandener war, wird dieser ja automatisch an eine neue stelle (da unsortiert denke ich an die letzte stelle) verschoben. Das ganze führt dann zu folgendem problem: der alte string der eigentlich an einer position war wo er sein sollte (identische position mit der sortieten liste) ist nun an letzter stelle der unsortierten liste und somit stimmt für diesen string die identische position zur sortierten liste wiederum nicht mehr überein.</p>
<p>verstanden? oder sehe ich da etwas falls das dies garnicht so ist? wäre eigentlich komisch. hast du da eine lösung für mich wie ich das problem lösen kann? das ganze führt so ja dann zu einem endlos problem. jedesmal wenn ein exchange stattgefunden hat, stimmt die position mit dem alten string nicht mehr überein. der neue string stimmt dann zwar aber eben.... <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/932669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932669</guid><dc:creator><![CDATA[SteffenB]]></dc:creator><pubDate>Fri, 02 Dec 2005 19:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sat, 03 Dec 2005 08:35:30 GMT]]></title><description><![CDATA[<p>Hier läuft doch m.E. etwas konzeptionell falsch. Du hast ja bis jetzt noch nicht mitgeteilt, warum du überhaupt 2 Listen führst. Vermutlich doch deshalb, weil zusammengehörige Informationen verwaltet werden sollen. Beipielsweise Liste 1 Nachname, Liste 2 der dazugeörige Vorname.</p>
<p>Das Vorgehen solche Daten in getrennten Listen zu halten und dann noch exakt zu synchronisieren ist aufwendig und lohnt nicht. Hier kommt noch erschwerend hinzu, dass eine List sortiert ist, und die andere nicht.</p>
<p>Mögliche bessere Vorgehensweisen sind:</p>
<p>- Erfasse alle Informationen in einem String und wenn du die einzelnen Informationen brauchst splittest du den String auf</p>
<p>- Baue dir ein struct auf, welches alle deine Informationen enthält. Das kannst du auch in einer TList oder in einem vector halten.</p>
<p>- Nutze ggf. eine DB und verschiedene Tabellen</p>
<p>- Halte beide Stringlisten gleich (unsortiert) und nur wenn du die Liste sortiert brauchst, übergibst du diese einer 3. Stringlist, die die Sortierung vornimmt und anzeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932854</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Sat, 03 Dec 2005 08:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sun, 04 Dec 2005 02:52:34 GMT]]></title><description><![CDATA[<p>das mit dem splitten dachte ich mir auch schon aber dann gibt es ein problem. somit könnten sich dann doppelte strings einschleichen. ich mach dir ein beispiel mit splitten und ohne splitten (so wie es nun ist mit einer zweiten nicht sortieten liste).</p>
<p><strong>Mit splitten</strong><br />
<em>wird geaddet sollte aber nicht, da der string<br />
vor dem splitt gleich sit wie der darauf folgende</em><br />
Der_String_Vor_Dem_Split**&lt;splitchar&gt;**123</p>
<p><em>wird geaddet sollte aber nicht, da der string<br />
vor dem splitt gleich sit wie der darauf folgende</em><br />
Der_String_Vor_Dem_Split**&lt;splitchar&gt;**1234</p>
<p><em>wird geaddet sollte aber nicht, da der string<br />
vor dem splitt gleich sit wie der darauf folgende</em><br />
Der_String_Vor_Dem_Split**&lt;splitchar&gt;**12345</p>
<p><strong>Ohne splitten dafür mit zweiter liste</strong><br />
<em>das geht, also adde etwas anderes in die zweite liste</em><br />
Der_String</p>
<p><em>das geht nicht mehr, also adde nichts in die zweite liste</em><br />
Der_String</p>
<p>nur eben wie beschrieben, ist mir aufgefallen das dies zwar geht aber sobald ein exchange in der unsortierten liste stattfindet, die positionen zuvor ggf. dann nicht mehr stimmen. Was nun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933626</guid><dc:creator><![CDATA[SteffenB]]></dc:creator><pubDate>Sun, 04 Dec 2005 02:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zweimal TStringList. Position von ListB muss gleich Position ListA sein on Sun, 04 Dec 2005 06:53:33 GMT]]></title><description><![CDATA[<p>Ich habe das Problem überhaupt nicht verstanden. Fakt bleibt, dass dein Vorgehen nicht optimal ist (EDV-Technisch). Irgendwas stimmt an deinem Datenmodel nicht.</p>
<p>Da mit der Aufnahme von gleichen Strings läßt sich mit dupIgnore erledigen. Es werden nur &quot;einmalige&quot; aufgenommen. Man kann ja auch vor dem ADD splitten und schauen, ob man ihn aufnimmt. Der Möglichkeiten gibt es viele. Hingewiese sei auf die Struktur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933632</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Sun, 04 Dec 2005 06:53:33 GMT</pubDate></item></channel></rss>