Delphi : procedure split similaire a la fonction eponyme en vb

Description

Découpe une chaîne délimitée en ses éléments pour remplir un tableau dynamique passé en paramètre. Un type formel doit être déclaré pour le tableau dynamique (cf. demo en pièce jointe). Par suite, cette source est utilisable à partir de la version 4 de Delphi.

Source / Exemple :


procedure Split(const Delimiter: char; DelimitedText: string; var StrArray: TStrArray);
var
  i, j, l: cardinal;
  k: byte;
begin
  { Fill the dynamic array with the items of a text delimited }
  if (DelimitedText=EmptyStr) then begin
    SetLength(StrArray, 1);
    StrArray[0]:=EmptyStr;
  end else if (Delimiter=#0) then begin
    SetLength(StrArray, 1);
    StrArray[0]:=DelimitedText;
  end else begin
    l:=Length(DelimitedText);
    if (Copy(DelimitedText, l, 1)<>Delimiter) then begin
      DelimitedText:=DelimitedText + Delimiter;
      l:=l+1;
    end;
    SetLength(StrArray, 256);
    k:=0;j:=0;
    for i:=1 to l do
      if (DelimitedText[i]=Delimiter) then begin
        inc(k);
        strArray[k-1]:=Copy(DelimitedText, j+1, i-(j+1));
        j:=i;
      end;
    SetLength(StrArray, k);
  end;
end;

Conclusion :


Vous noterez qu'il n'a pas été nécessaire d'instancier un TStringList ou d'ajouter une quelconque dépendance pour écrire cette procédure.

Rappel : le compilateur Delphi assure une gestion évoluée des tableaux dynamiques. Avec un autre compilateur, il vous faudra vérifier la libération de la mémoire allouée au tableau dynamique.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.