Embarcadero Delphi
Classe TStringList
Recherche…
introduction
TStringList est un descendant de la classe TStrings de la VCL. TStringList peut être utilisé pour stocker et manipuler la liste des chaînes. Bien qu'initialement prévu pour les chaînes, tout type d'objet peut également être manipulé à l'aide de cette classe.
TStringList est largement utilisé dans VCL lorsque l'objectif est de maintenir une liste de chaînes. TStringList prend en charge un ensemble complet de méthodes offrant un haut niveau de personnalisation et une facilité de manipulation.
L'exemple suivant illustre la création, l'ajout de chaînes, le tri, la récupération et la libération d'un objet TStringList.
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 possède une variété de cas d'utilisateurs, y compris la manipulation de chaînes, le tri, l'indexation, l'appariement des valeurs-clés et la séparation des délimiteurs.
Appariement valeur-clé
Vous pouvez utiliser une TStringList pour stocker des paires clé-valeur. Cela peut être utile si vous souhaitez stocker des paramètres, par exemple. Un paramètre se compose d'une clé (l'identifiant du paramètre) et de la valeur. Chaque paire valeur-clé est stockée sur une ligne du format StringList dans le format Key = Value.
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;
Dans cet exemple, la liste de chaînes contient le contenu suivant avant sa destruction:
1stName=John
LastName=Doe
City=New York
Note sur la performance
Sous le capot, TStringList
effectue une recherche de clé en effectuant une boucle droite sur tous les éléments, en recherchant un séparateur dans chaque élément et en comparant la partie du nom à la clé donnée. Nul besoin de dire que cela a un impact énorme sur les performances, ce mécanisme ne doit donc être utilisé que dans des endroits peu critiques et rarement répétés. Dans les cas où les performances sont importantes, il faut utiliser TDictionary<TKey,TValue>
de System.Generics.Collections
qui implémente la recherche de table de hachage ou conserver les clés dans TStringList
trié avec des valeurs stockées comme Object
-s utilisant un algorithme de recherche binaire.