SetLength

Ajuste la longueur d'une chaîne de caractères.

Syntaxe

procedure SetLength(var s: String; newLength: Integer)
var s: chaîne a redimensionner
newLength: nouvelle longueur

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

// ** Script pour construire une chaîne contenant tous les caractères ASCII **

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);

Classification

Internal Chaine