#1 4. Februar 2010 Zuletzt von einem Moderator bearbeitet: 15. April 2017 [Borland C++ Builder] Mit TStringList-Objekten arbeiten [C++ Tutorial für Borland C++ Builder] Mit TStringList-Objekten arbeiten: Das TStringList-Objekt verwaltet eine Liste, die Strings enthält. In diesem Tutorial wird folgendes Wissen vorausgesetzt: Mit String-Variablen arbeiten Um eine bessere Übersicht zu schaffen, sind die folgenden Dinge farblich gekennzeichnet: TStringList: ..... TStringList *<Bezeichner> . = Name des TStringList-Objekts Strings: .......... String <Bezeichner> .......... = Name der String-Variable Stringliteral: ... "<Wert>" ........................... = Inhalt des Strings Integer: .......... int <Bezeichner> Kommentare: . // Kommentar Methoden von TStringList: Spoiler TStringList deklarieren: Code: TStringList *[COLOR="DarkOrchid"]<Bezeichner>[/COLOR] = [B]new[/B] TStringList(); [COLOR="Blue"] // Der Operator [B]'new'[/B] ermöglicht eine dynamische Speicherreservierung // [B]'new'[/B] gibt einen Zeiger auf den zugewiesenen Speicher zurück // Der Operator [B]'*'[/B] wird verwendet um einen Zeiger zu erzeugen // Die Methode [B]'TStringList()'[/B] erstellt ein neues TStringList-Objekt[/COLOR] [COLOR="Blue"]/* Beispiel 1: */[/COLOR] TStringList *[COLOR="DarkOrchid"]strList_Test[/COLOR] = [B]new[/B] TStringList(); [COLOR="Blue"]// da man mit den Operatoren [B]'new'[/B] und [B]'*'[/B] dynamischen Speicher // reserviert hat, muss man diesen immer manuell wieder freigeben! // dafür verwendet man den Operator [B]'delete'[/B] // [B]'delete'[/B] gibt einen Speicherbereich frei, // der durch einen Aufruf von [B]'new'[/B] reserviert wurde // WICHTIG: Der Operator [B]'delete'[/B] wird ohne // den Operator [B]'*'[/B] (Zeiger) verwendet![/COLOR] [B]delete[/B] [COLOR="DarkOrchid"]strList_Test[/COLOR]; TStringList: Strings hinzufügen, löschen, einfügen: Code: [COLOR="Blue"]// Mit dem Operator [B]'->'[/B] kann auf Methoden des TStringList-Objekts // zugegriffen werden[/COLOR] [COLOR="Blue"]// Strings hinzufügen - Rückgabewert (optional) ist die Zeilennummer, // welche den angefügten String enthält // wobei 0 die ersten Zeile bezeichnet; 1 die zweite, usw.[/COLOR] ([COLOR="DarkOrange"]int[/COLOR]) [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Add([COLOR="Red"]<Bezeichner>[/COLOR]); ([COLOR="DarkOrange"]int[/COLOR]) [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Add([COLOR="SeaGreen"]"<Wert>"[/COLOR]); [COLOR="Blue"]// Strings löschen - Index gibt die Position des Strings an // wobei 0 den ersten String bezeichnet; 1 den zweiten, usw. // Sollte 'Delete' mit einem ungültigen Index-Wert aufgerufen werden // wird eine Exception ausgegeben[/COLOR] [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Delete([COLOR="DarkOrange"]<Index>[/COLOR]); [COLOR="Blue"]// alle Strings aus dem TStringList-Objekt löschen[/COLOR] [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Clear(); [COLOR="Blue"]// Strings einfügen - String an Position Index einfügen // wobei 0 die ersten Zeile bezeichnet; 1 die zweite, usw. // Sollte 'Insert' mit einem ungültigen Index-Wert aufgerufen werden // wird eine Exception ausgegeben[/COLOR] [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Insert([COLOR="DarkOrange"]<Index>[/COLOR], [COLOR="Red"]<Bezeichner>[/COLOR]); [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Insert([COLOR="DarkOrange"]<Index>[/COLOR], [COLOR="SeaGreen"]"<Wert>"[/COLOR]); Beispiele - Strings hinzufügen, löschen: Code: [COLOR="Blue"]/* Beispiel 1: */[/COLOR] String [COLOR="Red"]strTest1[/COLOR] = [COLOR="SeaGreen"]"Hallo"[/COLOR], [COLOR="Red"]strTest2[/COLOR] = [COLOR="SeaGreen"]"Welt!"[/COLOR]; [COLOR="Blue"]// Beide Strings dem TStringList-Objekt hinzufügen - ohne Rückgabewert[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="Red"]strTest1[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="Red"]strTest2[/COLOR]); [COLOR="Blue"]// Beide Strings dem TStringList-Objekt hinzufügen - mit Rückgabewert[/COLOR] int [COLOR="DarkOrange"]Pos1[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="Red"]strTest1[/COLOR]); int [COLOR="DarkOrange"]Pos2[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="Red"]strTest2[/COLOR]); [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: Hallo [COLOR="Blue"]// Zeilen-Index 0 - Rückgabewert Pos1 = 0[/COLOR] Welt! [COLOR="Blue"]// Zeilen-Index 1 - Rückgabewert Pos2 = 1[/COLOR] [COLOR="Blue"]// Die gerade hinzugefügten Strings löschen - manuell // Reihenfolge beachten - sonst bekommt man eine Exception[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delete([COLOR="DarkOrange"]1[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delete([COLOR="DarkOrange"]0[/COLOR]); [COLOR="Blue"]// Die gerade hinzugefügten Strings löschen - mit dem Rückgabewert (Index) // Reihenfolge beachten - sonst bekommt man eine Exception[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delete([COLOR="DarkOrange"]Pos2[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delete([COLOR="DarkOrange"]Pos1[/COLOR]); [COLOR="Blue"]// alternativ - 2x die erste Zeile löschen[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delete([COLOR="DarkOrange"]0[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delete([COLOR="DarkOrange"]0[/COLOR]); [COLOR="Blue"]// schnellste Variante[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Clear(); Beispiele - Strings einfügen: Code: [COLOR="Blue"]/* Beispiel 2: */[/COLOR] [COLOR="Blue"]// Stringliterale "Das" und "Beispiel" hinzufügen[/COLOR] [COLOR="DarkOrchid"]strList_test[/COLOR]->Add([COLOR="SeaGreen"]"Das"[/COLOR]); [COLOR="DarkOrchid"]strList_test[/COLOR]->Add([COLOR="SeaGreen"]"Beispiel"[/COLOR]); [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: Das [COLOR="Blue"]// Zeilen-Index 0[/COLOR] Beispiel [COLOR="Blue"]// Zeilen-Index 1[/COLOR] [COLOR="Blue"]// Stringliterale "ist" (Index 1) einfügen[/COLOR] [COLOR="DarkOrchid"]strList_test[/COLOR]->Insert([COLOR="DarkOrange"]1[/COLOR], [COLOR="SeaGreen"]"ist"[/COLOR]); [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: Das [COLOR="Blue"]// Zeilen-Index 0[/COLOR] ist [COLOR="Blue"]// Zeilen-Index 1[/COLOR] Beispiel [COLOR="Blue"]// Zeilen-Index 2[/COLOR] [COLOR="Blue"]// Stringliterale "ein" (Index 2) einfügen[/COLOR] [COLOR="DarkOrchid"]strList_test[/COLOR]->Insert([COLOR="DarkOrange"]2[/COLOR], [COLOR="SeaGreen"]"ein"[/COLOR]); [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: Das [COLOR="Blue"]// Zeilen-Index 0[/COLOR] ist [COLOR="Blue"]// Zeilen-Index 1[/COLOR] ein [COLOR="Blue"]// Zeilen-Index 2[/COLOR] Beispiel [COLOR="Blue"]// Zeilen-Index 3[/COLOR] TStringList: nach Strings suchen bzw. prüfen ob vorhanden: Code: int [COLOR="DarkOrange"]<Bezeichner>[/COLOR] = [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->IndexOf([COLOR="Red"]<Bezeichner>[/COLOR]); int [COLOR="DarkOrange"]<Bezeichner>[/COLOR] = [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->IndexOf([COLOR="SeaGreen"]"<Wert>"[/COLOR]); [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="Blue"]// prüfen ob "Hallo" im TStringList-Objekt vorhanden ist // 'IndexOf' liefert den Zeilen-Index des Strings als Rückgabewert // ist der String nicht im TStringList-Objekt enthalten, liefert // 'IndexOf' den Wert '-1' als Rückgabewert[/COLOR] int [COLOR="DarkOrange"]iPos[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->IndexOf([COLOR="SeaGreen"]"Hallo"[/COLOR]); [COLOR="Blue"]// den Rückgabewert auswerten[/COLOR] if ([COLOR="DarkOrange"]iPos [/COLOR]!= [COLOR="DarkOrange"]-1[/COLOR]) { [COLOR="Blue"]// Stringliteral "Hallo" hat den Index iPos[/COLOR] } else { [COLOR="Blue"]// Stringliteral "Hallo" ist nicht im TStringList-Objekt enthalten[/COLOR] } TStringList: Position von 2 Strings tauschen: Code: [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Exchange([COLOR="DarkOrange"]<Index1>[/COLOR], [COLOR="DarkOrange"]<Index2>[/COLOR]); [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="SeaGreen"]"4"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="SeaGreen"]"5"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="SeaGreen"]"3"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="SeaGreen"]"1"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->Add([COLOR="SeaGreen"]"2"[/COLOR]); [COLOR="Blue"]// Das TStringList-Objekt vor dem Tausch:[/COLOR] strList_Test: 4 [COLOR="Blue"]// Zeilen-Index 0[/COLOR] 5 [COLOR="Blue"]// Zeilen-Index 1[/COLOR] 3 [COLOR="Blue"]// Zeilen-Index 2[/COLOR] 1 [COLOR="Blue"]// Zeilen-Index 3[/COLOR] 2 [COLOR="Blue"]// Zeilen-Index 4[/COLOR] [COLOR="Blue"]// Index 0 ("4") und Index 3 ("1") tauschen[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Exchange([COLOR="DarkOrange"]0[/COLOR], [COLOR="DarkOrange"]3[/COLOR]); [COLOR="Blue"]// Index 1 ("5") und Index 4 ("2") tauschen[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Exchange([COLOR="DarkOrange"]1[/COLOR], [COLOR="DarkOrange"]4[/COLOR]); [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: 1 [COLOR="Blue"]// Zeilen-Index 0[/COLOR] 2 [COLOR="Blue"]// Zeilen-Index 1[/COLOR] 3 [COLOR="Blue"]// Zeilen-Index 2[/COLOR] 4 [COLOR="Blue"]// Zeilen-Index 3[/COLOR] 5 [COLOR="Blue"]// Zeilen-Index 3[/COLOR] TStringList: Strings sortieren: Code: [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Sort(); [COLOR="Blue"]// Mit 'Sort' werden die Strings im TStringList-Objekt // in aufsteigender Reihenfolge sortiert[/COLOR] [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="Blue"]// Das TStringList-Objekt unsortiert:[/COLOR] strList_Test: 4 [COLOR="Blue"]// Zeilen-Index 0[/COLOR] 5 [COLOR="Blue"]// Zeilen-Index 1[/COLOR] 3 [COLOR="Blue"]// Zeilen-Index 2[/COLOR] 1 [COLOR="Blue"]// Zeilen-Index 3[/COLOR] 2 [COLOR="Blue"]// Zeilen-Index 4[/COLOR] [COLOR="Blue"]// TStringList-Objekt sortieren[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Sort(); [COLOR="Blue"]// Das TStringList-Objekt sortiert:[/COLOR] strList_Test: 1 [COLOR="Blue"]// Zeilen-Index 0[/COLOR] 2 [COLOR="Blue"]// Zeilen-Index 1[/COLOR] 3 [COLOR="Blue"]// Zeilen-Index 2[/COLOR] 4 [COLOR="Blue"]// Zeilen-Index 3[/COLOR] 5 [COLOR="Blue"]// Zeilen-Index 4[/COLOR] Eigenschaften von TStringList: Spoiler Anzahl der Strings im TStringList-Objekt: Code: int [COLOR="DarkOrange"]<Bezeichner>[/COLOR] = [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->[COLOR="DarkOrange"]Count[/COLOR]; [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->[COLOR="DarkOrange"]Add[/COLOR]([COLOR="SeaGreen"]"4"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->[COLOR="DarkOrange"]Add[/COLOR]([COLOR="SeaGreen"]"5"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->[COLOR="DarkOrange"]Add[/COLOR]([COLOR="SeaGreen"]"3"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->[COLOR="DarkOrange"]Add[/COLOR]([COLOR="SeaGreen"]"1"[/COLOR]); [COLOR="DarkOrchid"]strList_Test[/COLOR]->[COLOR="DarkOrange"]Add[/COLOR]([COLOR="SeaGreen"]"2"[/COLOR]); [COLOR="Blue"]// Anzahl der Strings im TStringList-Objekt = 5[/COLOR] int [COLOR="DarkOrange"]iListCnt[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->[COLOR="DarkOrange"]Count[/COLOR]; Strings im TStringList-Objekt bearbeiten / abfragen: Code: String [COLOR="Red"]<Bezeichner>[/COLOR] = [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Strings[[COLOR="DarkOrange"]<Index>[/COLOR]]; ([COLOR="Red"]String[/COLOR]) [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Strings[[COLOR="DarkOrange"]<Index>[/COLOR]] = [COLOR="Red"]<Bezeichner>[/COLOR]; ([COLOR="Red"]String[/COLOR]) [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Strings[[COLOR="DarkOrange"]<Index>[/COLOR]] = [COLOR="SeaGreen"]"<Wert>"[/COLOR]; [COLOR="Blue"]// jeden String im TStringList-Objekt verändern[/COLOR] for (int [COLOR="DarkOrange"]i[/COLOR] = [COLOR="DarkOrange"]0[/COLOR]; [COLOR="DarkOrange"]i[/COLOR] < [COLOR="DarkOrange"]iListCnt[/COLOR]; [COLOR="DarkOrange"]++i[/COLOR]) { [COLOR="DarkOrchid"]strList_Test[/COLOR]->Strings[[COLOR="DarkOrange"]i[/COLOR]] = [COLOR="SeaGreen"]"Index: "[/COLOR] + [COLOR="Red"]String[/COLOR]([COLOR="DarkOrange"]i[/COLOR]); } [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: Index: 0 [COLOR="Blue"]// Zeilen-Index 0[/COLOR] Index: 1 [COLOR="Blue"]// Zeilen-Index 1[/COLOR] Index: 2 [COLOR="Blue"]// Zeilen-Index 2[/COLOR] Index: 3 [COLOR="Blue"]// Zeilen-Index 3[/COLOR] Index: 4 [COLOR="Blue"]// Zeilen-Index 4[/COLOR] TStringList: doppelte Strings: Code: [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Duplicates = <Wert>; [COLOR="Blue"]// Die Eigenschaft 'Duplicates' legt fest, ob zu einer sortierten Liste // String-Duplikate (identische Stringliterale) hinzugefügt // werden können // '<Wert>' legt dabei die Aktion fest, die ausgeführt werden soll, // wenn ein String mehrfach zu einer sortierten Liste hinzugefügt // werden wird[/COLOR] [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="Blue"]// dupIgnore - Der Versuch, der sortierten Liste ein // String-Duplikat hinzuzufügen, wird ignoriert[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Duplicates = dupIgnore; [COLOR="Blue"]// dupError - Der Versuch, der sortierten Liste ein // String-Duplikat hinzuzufügen, führt zu einer Exception[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Duplicates = dupError; [COLOR="Blue"]// dupAccept - doppelte Strings in der sortierten Liste // sind erlaubt[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Duplicates = dupAccept; TStringList: einen einzelnen String durch ein Trennzeichen trennen: Code: (char) [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Delimiter = '<einzelnes Zeichen>'; [COLOR="Blue"]// Trennzeichen[/COLOR] [COLOR="Blue"]// Die Eigenschaft 'DelimitedText' stellt alle Strings im TStrings-Objekt // in einem einzigen String dar. // Durch Zuweisung eines Strings kann dieser getrennt werden und // wird somit in einzelne Strings zerlegt[/COLOR] ([COLOR="Red"]String[/COLOR]) [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->DelimitedText = [COLOR="Red"]<Bezeichner>[/COLOR]; [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="Blue"]// Trennzeichen = ',' (Komma)[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->Delimiter = ','; [COLOR="Blue"]// String zum Zerlegen - getrennt durch das Trennzeichen (Delimiter)[/COLOR] String [COLOR="Red"]strCut[/COLOR] = [COLOR="SeaGreen"]"Das,ist,ein,Beispiel"[/COLOR]; [COLOR="Blue"]// String zerlegen[/COLOR] [COLOR="DarkOrchid"]strList_Test[/COLOR]->DelimitedText = [COLOR="Red"]strCut[/COLOR]; [COLOR="Blue"]// Das TStringList-Objekt sieht dann wie folgt aus:[/COLOR] strList_Test: Das [COLOR="Blue"]// Zeilen-Index 0[/COLOR] ist [COLOR="Blue"]// Zeilen-Index 1[/COLOR] ein [COLOR="Blue"]// Zeilen-Index 2[/COLOR] Beispiel [COLOR="Blue"]// Zeilen-Index 3[/COLOR] TStringList: Strings im Format "Bezeichner=Wert" (INI-Datei): Code: [COLOR="Blue"]// Bezeichner (den Teil des Strings vor dem '=') in // Zeile <Index> ermitteln[/COLOR] String [COLOR="Red"]<Bezeichner>[/COLOR] = [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Names[[COLOR="DarkOrange"]<Index>[/COLOR]]; [COLOR="Blue"]// Wert (den Teil des Strings nach dem '=') auslesen[/COLOR] String [COLOR="Red"]<Bezeichner>[/COLOR] = [COLOR="DarkOrchid"]<Bezeichner>[/COLOR]->Values[[COLOR="SeaGreen"]"<Name des Bezeichners>"[/COLOR]]; [COLOR="Blue"]/* Beispiel 1: */[/COLOR] [COLOR="Blue"]// Das TStringList-Objekt sieht wie folgt aus:[/COLOR] strList_Test: Test1=a [COLOR="Blue"]// Zeilen-Index 0[/COLOR] Test2=b [COLOR="Blue"]// Zeilen-Index 1[/COLOR] Test3=c [COLOR="Blue"]// Zeilen-Index 2[/COLOR] [COLOR="Blue"]// Bezeichner auslesen[/COLOR] String [COLOR="Red"]strBezeichner1[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Names[[COLOR="DarkOrange"]0[/COLOR]]; [COLOR="Blue"]// = Test1[/COLOR] String [COLOR="Red"]strBezeichner2[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Names[[COLOR="DarkOrange"]1[/COLOR]]; [COLOR="Blue"]// = Test2[/COLOR] String [COLOR="Red"]strBezeichner3[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Names[[COLOR="DarkOrange"]2[/COLOR]]; [COLOR="Blue"]// = Test3[/COLOR] [COLOR="Blue"]// Werte auslesen - manuell[/COLOR] String [COLOR="Red"]strWert1[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Values[[COLOR="SeaGreen"]"Test1"[/COLOR]]; [COLOR="Blue"]// = a[/COLOR] String [COLOR="Red"]strWert2[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Values[[COLOR="SeaGreen"]"Test2"[/COLOR]]; [COLOR="Blue"]// = b[/COLOR] String [COLOR="Red"]strWert3[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Values[[COLOR="SeaGreen"]"Test3"[/COLOR]]; [COLOR="Blue"]// = c[/COLOR] [COLOR="Blue"]// Werte auslesen - mit den ermittelten Bezeichnern[/COLOR] String [COLOR="Red"]strWert1[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Values[[COLOR="Red"]strBezeichner1[/COLOR]]; [COLOR="Blue"]// = a[/COLOR] String [COLOR="Red"]strWert2[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Values[[COLOR="Red"]strBezeichner2[/COLOR]]; [COLOR="Blue"]// = b[/COLOR] String [COLOR="Red"]strWert3[/COLOR] = [COLOR="DarkOrchid"]strList_Test[/COLOR]->Values[[COLOR="Red"]strBezeichner3[/COLOR]]; [COLOR="Blue"]// = c[/COLOR] [COLOR="Blue"]// nur um es genauer zu zeigen[/COLOR] String [COLOR="Red"]strGesamt[/COLOR] = [COLOR="Red"]strWert1[/COLOR] + [COLOR="Red"]strWert2[/COLOR] + [COLOR="Red"]strWert3[/COLOR]; [COLOR="Blue"]// = abc[/COLOR] Ich hoffe das Tutorial hat euch geholfen! + Multi-Zitat Zitieren