Fonction split

Contenu du snippet

Du fait que les fonctions Split que j'ai trouvé sur le web ne marchait pas correctement, j'ai décidé d'en créer une répondant à mes besoins.
Voici celle-ci et un exemple type :

Source / Exemple :


Procedure Split(Var retour : Array Of String; Chaine : String; Car : Char);
Var
Compteur : Integer;
PosUne : Integer;
PosDeux : Integer;
Temp : String;

Begin
PosUne := 1;
PosDeux := Pos(Car,Chaine);

Compteur := 0;

While ((PosDeux <> 0) and (Compteur <> Length(Retour))) Do
Begin
  Retour[Compteur] := Copy(Chaine, PosUne, (PosDeux - PosUne));
  If Length(Retour[Compteur]) = 0 then Retour[Compteur] := ' ';
  Temp := Copy(Chaine, PosDeux + 1, (Length(Chaine) - PosDeux));
  Chaine := Temp;
  PosDeux := Pos(Car,Chaine);
  Compteur := Compteur + 1;
End;

If Compteur <> Length(Retour) Then
Begin
 Retour[Compteur] := Copy(Chaine, PosUne, (Length(Chaine) - (PosUne - 1 )));
 If Length(Retour[Compteur]) = 0 then Retour[Compteur] := ' ';
End;

End;

Procedure TForm1.Button1Click(Sender: TObject);
Var
  Mon_Tableau : array[1..10] of string;
  Ma_Chaine : String;
  Mon_Delimiteur : Char;
  i : Integer;

Begin
  // On peut remarquer que Ma_Chaine comporte des chaines vides entre le délimiteur //
  Ma_Chaine := 'test1;;test3;test4;test5;test6;test7;;test9;';
  Mon_Delimiteur := ';';

  Split(Mon_Tableau, Ma_Chaine, Mon_Delimiteur);

  For i:= 1 to 10 Do ShowMessage(Mon_Tableau[i]);
End;

Conclusion :


Les résultats obtenus sont:
i = 1 => 'test1'
i = 2 => ' '
i = 3 => 'test3'
i = 4 => 'test4'
i = 5 => 'test5'
i = 6 => 'test6'
i = 7 => 'test7'
i = 8 => ' '
i = 9 => 'test9'
i =10 => ' '

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.