Tank01
Messages postés106Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention10 novembre 2006
-
17 mai 2006 à 10:40
Tank01
Messages postés106Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention10 novembre 2006
-
18 mai 2006 à 15:56
Bonjour,
Je souhaitais savoir comment parcourir une String caractère à caractère afin de chercher un certain caractère.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 mai 2006 à 12:13
ah autant pour moi ... faut pas pchariser S ... ça fait l'effet inverse ... pourtant je sais que c'est une solution inutile pour un caractere unique ...
function PosChar(const SubStr : char; const S: string; Offset: Cardinal = 1): Integer;
var
I, L : Integer;
begin
Result := 0;
if Offset = 1 then begin
Result := Pos(SubStr, S);
exit;
end;
I := Offset;
L := Length(S);
while I <= L do begin
if S[I] = SubStr then begin
Result := I;
exit;
end;
Inc(I);
end;
end;
neosystemsteam
Messages postés23Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention28 juillet 20061 17 mai 2006 à 10:57
var chaine , chaine_a_trouver: string;
x : integer;
begin
for x : =0 to length(chaine)-1 do
begin
if chaine[x]=chaine_a_trouver then // votre condition ici
end;
end;
neosystems.team@gmail.com
exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008 17 mai 2006 à 11:26
FONCTION POS
Renvoie la valeur d'indice du premier caractère dans une sous-chaîne spécifiée qui se trouve dans une chaîne.
Unité: System
function Pos(Substr: string; S: string): Integer;
Description
La fonction Pos recherche une sous-chaîne, Substr, à l'intérieur d'une chaîne S. Substr et S sont des expressions de type chaîne.
Pos recherche Substr à l'intérieur de S et renvoie une valeur entière correspondant à l'indice du premier caractère de Substr à l'intérieur de S. Pos fait la distinction majuscules/minuscules. Si Substr est introuvable, Pos renvoie zéro.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 mai 2006 à 12:10
hophop
attention les chaines sont assé particuliere a "parcourir" cela degrade les performances trés vite ...
le meilleur moyen : utiliser POS ou POSEX (unité StrUtils)
POSEX afficheras de meilleur performance qu'une methode avec boucle for.
en adaptant POSEX pour les Char uniquement, on augmente un peu les performances de celle-ci :
function PosChar(const SubStr : char; const S: string; Offset: Cardinal = 1): Integer;
var
I, L : Integer;
PS : PChar;
begin
Result := 0;
if Offset = 1 then begin
Result := Pos(SubStr, S);
exit;
end;
I := Offset-1;
L := Length(S)-1;
PS:= PChar(S);
while I <= L do begin
if PS[I] = SubStr then begin
Result := I+1;
exit;
end;
Inc(I);
end;
end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Emandhal
Messages postés194Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention10 octobre 20063 17 mai 2006 à 18:40
u tout le monde.
Et ca?
function PosChar(const SubStr : char; const S: string; Offset: Cardinal = 1): Integer;
var
pS: PChar;
begin
Result := 0;
pS := PChar(S);
While pS^<>#0 do
begin
If pS^=SubStr Then
begin
Result := pS-PChar(S)+1; // à vérifier le '+1' s'il est utile, je fais ca de tete là ^^
Exit;
end;
Inc(pS);
end;
end;
Je pense que c'est plus rapide, mais pour un cas comme celui là, un Pos suffit je pense.
Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...