TStrings.SVQText
| TStrings = class (TObject) | Interface de TStrings | Exemples de TStrings |
Qubes 6.2 Remplissage d'une TStrings à partir de données délimitées
Syntaxe
property SVQText[separator, quoteChar: String]: String read GetSVQText write SetSVQText
separator: caractères de séparation entre 2 éléments
quoteChar: caractères de délimitation de chaque élément
Remarques
Ce format a pour but d'être plus générique et plus simple que TStrings.CommaText, TStrings.SCSVText, TStrings.Text, TStrings.TabText :
- Si un élément ne commence pas immédiatement par quoteChar, la fin de l'élément sera la prochaine occurrence de separator (ou, à défaut, la fin de la chaîne).
- Si un élément commence immédiatement par quoteChar, la fin de l'élément sera la prochaine occurrence de quoteChar qui n'est pas doublée (ou, à défaut, la fin de la chaîne).
- Quand on a trouvé la fin d'un élément, on recherche la prochaine occurrence de separator, qui marque le début de l'élément suivant (si des caractères sont présents entre la fin de l'élément et la prochaine occurrence de separator, ils sont ignorés).
Note: Les séparateurs sont interprété comme des "fin de lignes", et lors d'une affectation de SQVText, si le dernier caractère est un séparateur, il sera ignoré (ie. il n'est pas ajouté de chaîne vide). Ce comportement diffère notamment de celui de StrSplit.
Exemples
uses SysUtils;
var lst := TStrings.Create;
lst.SVQText[',', '"']:='tata,"toto, titi",tutu "tyty" tyty,"tata ""tutu"" titi",,"ti"ti,"tu';
PrintLn(lst.Text); // tata
// toto, titi // la chaîne contient le séparateur => il faut la délimiter
// tutu "tyty" tyty // la chaîne ne contient pas le séparateur et ne commence pas par le délimiteur
// tata "tutu" titi // => pas besoin de la délimiter (mais on peut le faire, cf. ci-contre)
// // on peut mettre des chaînes vides
// ti // les caractères présents après la fin de l'élément sont ignorés
// tu // on est arrivé au bout => l'élément s'arrête
lst.Add('ta "to", tu'); // On ajoute une chaîne avec le séparateur et le délimiteur
PrintLn(lst.SVQText[',', '"']); // "tata","toto, titi","tutu ""tyty"" tyty","tata ""tutu"" titi","","ti","tu","ta ""to"", tu"
var lst := TStrings.Create;
lst.SVQText[',', '"']:='tata,"toto, titi",tutu "tyty" tyty,"tata ""tutu"" titi",,"ti"ti,"tu';
PrintLn(lst.Text); // tata
// toto, titi // la chaîne contient le séparateur => il faut la délimiter
// tutu "tyty" tyty // la chaîne ne contient pas le séparateur et ne commence pas par le délimiteur
// tata "tutu" titi // => pas besoin de la délimiter (mais on peut le faire, cf. ci-contre)
// // on peut mettre des chaînes vides
// ti // les caractères présents après la fin de l'élément sont ignorés
// tu // on est arrivé au bout => l'élément s'arrête
lst.Add('ta "to", tu'); // On ajoute une chaîne avec le séparateur et le délimiteur
PrintLn(lst.SVQText[',', '"']); // "tata","toto, titi","tutu ""tyty"" tyty","tata ""tutu"" titi","","ti","tu","ta ""to"", tu"