Listes de chaînes (tech)

De Wiki1000

Sommaire

Introduction

La classe TStringList permet de manipuler des chaînes de caractères.

Les listes de chaînes peuvent être utilisées de différentes manières :

  • En simple liste de chaîne
  • En liste de couple Nom/Valeur
  • En liste de chaînes triées

Lorsqu'elles sont triées les listes de chaînes permettent des recherches rapides dans la liste. La propriété Duplicates permet alors de contrôler le comportement de la liste vis à vis des doublons éventuellement insérés dans la liste.

  • En liste de chaînes associés à un objet.

En utilisant les méthodes AddObject et InsertObject et la propriété Objects vous pouvez associer des objets aux chaînes de la liste, la liste maintient alors une référence sur ces objets.

Tip-20px.png Tip : Les listes d'objets permettent de trier des objets sur des attributs de la classe alors que les listes de chaînes permettent de trier des objets sur un critère de tri arbitraire.

Déclaration d'une variable liste de chaînes

Les listes de chaînes doivent être déclarée avant d'être utilisées :

var ls:TStringList;

Création d'une liste de chaînes

Exemple

var ls:TStringList;
begin
  ls := TStringList.Create;
end;

Liste triée

var ls:TStringList;
begin
  ls := TStringList.Create;
  ls.Sorted := True;
  ls.Duplicates := dupError;
end;

Propriétés

Propriétés d'accès aux chaînes

Nom Type Accès Usage
Count Integer Read only Renvoie le nombre de châines dans la liste.
Strings[index] string Read/Write Accès à une chaîne par son index
Objects[index] TObject Read/Write Accès à l'objet associé à la chaîne par son index
LineBreak String Read/Write Positionne le ou les caractères séparateur de ligne utilisée par Text
Text String Read/Write Retourne le contenu de la liste sous forme d'une chaîne de caractère unique
AsBase64Binary String Read/Write Retourne le contenu de la liste encodée en format base64

Utilisation des listes triées

Nom Type Accès Usage
Sorted Boolean Read/Write Indique si la liste est triée.
Duplicates Enum Read/Write Permet d'indiquer le comportement d'une liste triée sur un doublon :
  • dupIgnore  : L'objet n'est pas inséré, aucune erreur.
  • dupAccept  : L'objet est inséré.
  • dupError  : Une exception est déclenchée.

Par défaut Duplicates = dupAccept

Info-20px.png Note : Le changement de la propriété Duplicates n'a pas d'effet sur les éléments déjà présents dans la liste.
CaseSensitive Boolean Read/Write Indique si la sesibilité à la case du tri.

Utilisation des listes en couple nom/valeur

Nom Type Accès Usage
NameValueSeparator char Read/Write Retourne le séparteur de nom / valeur
Names[index] string Read only Retourne le nom de la chaîne
Values[index] String Read/Write Retourne la valeur de la chaîne

Formattage du texte

Nom Type Accès Usage
CommaText String Read/Write Retourne les chaînes encapsulées par des quotes et sépararée par des virgules.
DelimitedText String Read/Write Retourne les chaînes encapsulées par QuoteChar et sépararée par Delimiter
Delimiter Char Read/Write Delimiter de chaîne pour DelimitedText
StrictDelimiter Boolean Read/Write Indique si le délimiteur de chaîne pour DelimitedText est strict ou non.
QuoteChar Char Read/Write Caractère d'encapsulation pour DelimitedText

Méthodes

Add Ajoute une chaîne dans la liste
AddObject Ajoute une chaîne associée à un objet dans la liste
Append Ajoute une chaîne à la liste
Insert Insère une chaîne dans la liste
InsertObject Insère une chaîne associée à un objet dans la liste
IndexOf Retourne l'index d'une chaîne de la liste
AddStrings Ajoute les chaînes contenues dans une liste
Delete Supprime une chaîne de la liste par son index
Exchange Echange deux chaînes de la liste
Move Déplace une chaîne de la liste
Clear Vide la liste
Sort Trie la liste
Equals Teste si la liste est égale a une autre liste
IndexOfName Retourne l'index de la chaîne de nom indiquée
LoadFromFile Charge la liste d'un fichier
SaveToFile Sauvegarde la liste dans un fichier
SaveToFileNoCRLF Sauvegarde le contenu de la liste dans un fichier sans enregistrer de séparateur de ligne.
GetAsBase64Binary Retourne le contenu de la liste encodée en format base 64
SetAsBase64Binary Positionne le contenu de la liste a partir d'une source encodée en base 64

Exemples

var ls:TStringList; idx:Integer; S:string; inst:WFClasseA; cursor:WFClasseACursor; count:Integer;
begin
 ls := TStringList.Create;
 ls.Sorted := True;
 ls.Duplicates := dupIgnore;
 //
 Cursor := WFClasseA.CreateCursorWhere('','',true,['A',1]);
 foreach inst in cursor index count do
  begin
    ls.AddObject(inst.Caption,inst);
  end;
 //
 showmessage(Format('inserted:%d, unique:%d',[Count+1,ls.count]));
 //
 foreach S in ls do
  ShowMessage(S);
 //
 for idx:=0 to ls.Count-1 do
  begin
    inst := ls.Objects[idx] as WFClasseA;
    ShowMessage(inst.unCode);
  end;
end;

Code métierDéveloppement DSM

Outils personnels