Suche…


Einführung

TStringList ist ein Nachkomme der TStrings-Klasse der VCL. TStringList kann zum Speichern und Bearbeiten von Strings verwendet werden. Obwohl ursprünglich für Strings vorgesehen, können mit dieser Klasse auch beliebige Objekttypen bearbeitet werden.

TStringList wird in VCL häufig verwendet, wenn der Zweck besteht, eine Liste von Strings zu verwalten. TStringList unterstützt eine Vielzahl von Methoden, die ein hohes Maß an Anpassung und einfache Handhabung bieten.

Das folgende Beispiel zeigt das Erstellen, Hinzufügen von Strings, das Sortieren, Abrufen und Freigeben eines TStringList-Objekts.

procedure StringListDemo;
var 
   MyStringList: TStringList;
   i: Integer;

Begin

   //Create the object
   MyStringList := TStringList.Create();
   try
      //Add items
      MyStringList.Add('Zebra');
      MyStringList.Add('Elephant');
      MyStringList.Add('Tiger');

      //Sort in the ascending order
      MyStringList.Sort;

      //Output 
      for i:=0 to MyStringList.Count - 1 do
        WriteLn(MyStringList[i]);
   finally
      //Destroy the object
      MyStringList.Free;
   end;
end;

TStringList bietet eine Vielzahl von Benutzerfällen, einschließlich der Bearbeitung von Zeichenfolgen, dem Sortieren, der Indexierung, der Schlüsselwertpaarung und der Trennung von Trennzeichen.

Schlüsselwertpaarung

Sie können eine TStringList verwenden, um Schlüssel-Wert-Paare zu speichern. Dies kann nützlich sein, wenn Sie beispielsweise Einstellungen speichern möchten. Eine Einstellung besteht aus einem Schlüssel (der ID der Einstellung) und dem Wert. Jedes Schlüssel-Wert-Paar wird in einer Zeile der StringList im Format Key = Value gespeichert.

procedure Demo(const FileName: string = '');
var
   SL: TStringList;
   i: Integer;
begin
     SL:= TStringList.Create;
     try
        //Adding a Key-Value pair can be done this way
        SL.Values['FirstName']:= 'John';   //Key is 'FirstName', Value is 'John'
        SL.Values['LastName']:= 'Doe';   //Key is 'LastName', Value is 'Doe'

        //or this way
        SL.Add('City=Berlin');  //Key ist 'City', Value is 'Berlin'

        //you can get the key of a given Index
        IF SL.Names[0] = 'FirstName' THEN
         begin
              //and change the key at an index
              SL.Names[0]:= '1stName';  //Key is now "1stName", Value remains "John"
         end; 
      
        //you can get the value of a key
        s:= SL.Values['City']; //s now is set to 'Berlin'

        //and overwrite a value 
        SL.Values['City']:= 'New York';

        //if desired, it can be saved to an file
        IF (FileName <> '') THEN
         begin
              SL.SaveToFile(FileName);
         end;
     finally
        SL.Free;
     end;
end;

In diesem Beispiel hat die Stringliste den folgenden Inhalt, bevor sie zerstört wird:

1stName=John
LastName=Doe
City=New York

Hinweis zur Leistung

Unter der Haube TStringList führt die Schlüsselsuche durch, indem alle Elemente direkt durchlaufen werden, innerhalb jedes Elements nach einem Trennzeichen gesucht wird und der Namensanteil mit dem angegebenen Schlüssel verglichen wird. Es muss nicht gesagt werden, dass dies einen großen Einfluss auf die Leistung hat. Daher sollte dieser Mechanismus nur an unkritischen, selten wiederholten Orten verwendet werden. In Fällen, in denen es auf die Leistung ankommt, sollten Sie TDictionary<TKey,TValue> von System.Generics.Collections , die die Hashtabellensuche implementieren, oder die Schlüssel in sortierter TStringList mit Werten speichern, die als Object -s gespeichert sind, und den binären Suchalgorithmus verwenden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow