Tech-Ecke / Delphi Inhalt / TStringList

 

     TStringList

 

   Grundlegendes

Der Inhalt einer TStringList Komponente ist vergleichbar mit TListBox (nur das diese keine visuelle Komponente ist, also nicht auf einem Form platziert wird). TStringlist muss wie eine Variable für jede Procedure deklariert werden.

Die Aufzählung der Zeilen beginnt mit 0, also die erste Zeile ist 0 die zweite Zeile 1 die dritte Zeile 2 und so weiter...  Jede einzelne Zeile für sich betrachtet ist ein einfacher String  Ergo, (var SList: TStringList;) SList.[0] ist die erste Zeile der TStringList SList "und quasi ein String", demzufolge gelten auch alle Operationen die für einen String gelten > siehe Stringoperationen. Tausche dazu einfach das "S" in den Beispielen durch SList.[X] (wobei X die Zeile der SList ist). Bevor jedoch ein TStringList verwendet werden kann muss diese mit Name := TStringList.Create; "geöffnet" und nach benutzung sollte sie wieder mit Name.free; "geschlossen" werden.

Länge des Textes in einer TStringList Zeile ermitteln > siehe Stringoperationen

Inhalt eines in einer TStringList Zeile zurechtschneiden > siehe Stringoperationen

Nach einem Zeichen oder Teilstring in einer TStringList Zeile suchen > siehe Stringoperationen

Zuweisen von Text

   var
    SList: TStringList;
    S:
String;

SList := TStringList.Create;

        SList.Add (
'ich bin ein TEdit');   // oder    SList.Add.Add(S);

SList.free;
 

Auslesen einer Zeile

   var
    SList: TStringList;
    S:
String;

SList := TStringList.Create;

       
Edit1.Text := SList[0] // liest den Inhalt der ersten Zeile in Edit1
        S := SList[1] // liest den Inhalt der zweiten Zeile in die Variable S

SList.free;
 

Zuweisen einer Integer - Zahl ( var Zahl: Integer; )  [sieh auch > Umwandeln von Variablen]

    var
    SList: TStringList;
    S:
String;

SList := TStringList.Create;

        SList.Add(IntToStr(Zahl));


SList.free;
 

Zuweisen mehrerer Zeilen

   

var
    SList: TStringList;
    Variable:
String;

SList := TStringList.Create;

    SList.Add(
'erste Zeile');
    SList.Add(
'zweite Zeile');
    SList.Add((
'dritte Zeile')+(Variable));
    SList.Add(Variable);
SList.SaveToFile(
'Datei.txt'); // dann kann man das ganze noch in einer Datei Speichern

SList.free;

 

   Eintrag nur dann hinzufügen wenn dieser nicht vorhanden ist ( var S: String; SList: TStingList;)

    S := ('hinzufügen wenn nicht bereits enthalten');
  
if SList.IndexOf(S) = -1 then ListBox1.Items.Add(S);
 

   Löschen einer Zeile ( var SList: TStingList; // Create und Free nicht vergessen )
 

   SList.Delete(0);  //löscht die erste Zeile
 

   Kompletten Inhalt löschen ( var SList: TStingList; // Create und Free nicht vergessen )

   SList.Clear;  //löscht alle Zeilen
 

   Doppelte Einträge löschen ( var SList: TStingList; // Create und Free nicht vergessen )

   

begin
   x :=
0;
while x <= SList.count - 2 do
       
begin
           
for i := x + 1 to SList.count - 1 do
               
begin
                   
if SList[x] = SList[i] then
                       
begin
                            dec(x);
                            SList.delete(i);
                            break;
                       
end;
                   
end;
                    inc(x);
               
end;
       
end;

// Quelle www.delphipraxis.net

 

   Suchen nach Eintrag ( var SList: TStingList; // Create und Free nicht vergessen )

   

var
    Zeile:
String;

Zeile := SList.IndexOf(
'Suchwort')


// wird ‚Suchwort’ nicht als Eintrag (komplette Zeile) in ListBox1 gefunden ist der Ausgabewert in Variable Zeile -1
// wird ‚Suchwort’ in ListBox1 gefunden, enthält die Variable Zeile die erste Zeile in der ‚Suchwort’ gefunden wird

 

   Inhalt aus Datei laden ( var SList: TStingList; // Create und Free nicht vergessen )

   SList.LoadFromFile('Datei.txt'); // hier wäre es angebracht die Anweisung in ein "try except" zu packen > sieh hier
 

   Inhalt in Datei speichern ( var SList: TStingList; // Create und Free nicht vergessen )

   SList.SaveToFile('Datei.txt'); // hier wäre es angebracht die Anweisung in ein "try except" zu packen > sieh hier

 SList.Items.SaveToFile('Datei.txt', TEncoding.ASCII); // in ASCII Zeichenkodierung
 SList.Items.SaveToFile('Datei.txt', TEncoding.UTF8); // in UTF8 Zeichenkodierung
 

   Anzahl der Zeilen ermitteln ( var SList: TStingList; // Create und Free nicht vergessen )

   var
    Zeilen: Integer;

Zeilen := SList.Count;
 

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

[letzte Aktualisierung 09.10.2006]