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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow