Embarcadero Delphi
TStringList-Klasse
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.