SetLength
Ajuste la longueur d'une chaîne de caractères.
Syntaxe
procedure SetLength(var s: String; newLength: Integer)
Remarques
SetLength modifie la longueur de la chaîne de caractères S. NewLength indique le nouveau nombre de caractères ou d'éléments dans S (compris entre 0 et 2^31, soit un maximum de 2 giga-octets par chaîne de caractères).
Si NewLength est inférieure à la longueur initiale de S, S sera tronquée à la longueur indiquée. Si NewLength est supérieure à la longueur initiale de S, cette fonction ajoutera à S le nombre de caractères nécessaire pour atteindre la longueur indiquée. Le contenu des nouveaux caractères est aléatoire et ne doit pas être utilisé tel quel !
Une utilisation classique de cette procédure est quand on a besoin d'une chaîne avec un nombre de caractères donné, qui ne peut pas être définie par une assignation directe. Dans ce cas, plutôt que de la créer par une boucle qui va effectuer des concaténations successives, il est parfois plus performant d'allouer directement en mémoire une chaîne de la bonne taille avec SetLength, puis de faire une boucle pour mettre à jour la valeur de chacun des caractères (en utilisant S[i]:='A' par exemple pour indiquer que le caractère i de la chaîne S doit valoir 'A').
Exemples
var S : String;
var i : Integer;
// 1ère solution (moins performante)
S:='';
for i:=1 to 128 do S:=S+Chr(i-1);
// 2ème solution (plus performante)
SetLength(S, 128);
for i:=1 to 128 do S[i]:=Chr(i-1);