Listes de chaînes (tech)
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 : 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 :
Par défaut Duplicates = dupAccept |
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étier — Développement DSM —