function TokenAt(const S: string; Seperator: Char; At: Integer): string; var J, I: Integer; begin Result := ''; J := 1; I := 0; while (I <= At) and (J <= Length(S)) do begin if (S[J] = Seperator) then Inc(I) else if (I = At) then Result := Result + S[J]; Inc(J); end; Result := Trim(Result); end;
Fonction proposé suite à un problème de Manu00
Function SubString(Str: String ; Substr: String ; n: Integer): String;var z: Integer;begin Str := Str + Substr; For z := 1 to n do begin Str := copy(Str, pos(Substr, Str)+length(Substr), length(Str)-pos(Substr, Str)+Length(Substr)); end; Result := copy(Str, 1, pos(Substr, Str)-1);end;Ce code là aurait-il pas été plus simple? voir mieux vu que le séparateur peut-être aussi bien un Char qu'une String?
Redirigé ici par ni69 qui répondait à une question posée sur le forum. ;)On n'a pas fini de l'explorer, notre site préféré !Dans son exemple, l'auteur a certainement voulu dire :s := 'aaa;bb;ccc'si on lance s1 := TokenAt(s, ';', 2)alors s1 = 'ccc'... vérifiez !La fonction proposée dans le commentaire par Emandhal sera plus correcte en remplaçant :Result := Copy(Str, 1, pos(Substr, Str) -1);... par :Result := Trim(Copy(Str, 1, pos(Substr, Str) -1));si l'on tient compte des espaces éventuels, comme dans le code d'Amadeus.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 598 853 membres 115 nouveaux aujourd'hui 15 441 membres club