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 => ' '
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.