Fonction Pos(). [Résolu]

Signaler
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005
-
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
-
Salut les gars,



Je voudrais savoir comment avec la fonction Pos() signifier par exemple
à Delphi de vérifier si un mot est contenu trois fois au lieu
d'une fois dans une chaine de caractère par exemple label1.caption.



Merci à tous.

-----------------------------------------

May Delphi and Php change the world ....

7 réponses

Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Voilà !



function NombreDeSubStrDansStr(SubStr:String; Str:String):Integer;
var
i:integer;
begin
result := 0; i := 0; // initialisation
repeat // ON REPETE CE CODE
i: =PosEx(SubStr,Str,i+1); // Recherche la SubString dans la String principale à partir du (i+1)ème caractère
if i<>0 then inc(result); // Si la SubString a été trouvée (donc que 1<>0), on ajoute 1 à la valeur de retour de la fonction
until i= 0; // JUSQU'A CE QUE i VAILLE 0, C'EST A DIRE QUE LA SUBSTRING N'A PLUS ETE TROUVEE DANS LA STR PRINCIPALE
end ;


Remarque : Cette fonction n'est disponible qu'à partir de Delphi7.


@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size ="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut ,
tu peux faire :
function nombredemot(var chaineacontroler:string;mot:string):integer;
var index:integer;
buffer:string;
begin
buffer:= chaineacontroler;
index:=0;
while (pos(mot,buffer))<>0 do
begin
inc(index);
delete(buffer,pos(mot,buffer),length(mot));//on supprime le mot de la chaine
end;
result: =index;
end;
bonne prog;
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Pourquoi ne pas utiliser la fonction PosEx() de l'unité StrUtils ?



function NombreDeSubStrDansStr(SubStr:String; Str:String):Integer;

var

i:integer;

begin

result := 0; i := 0;

repeat

i: =PosEx(SubStr,Str,i+1);

if i<>0 then inc(result);

until i= 0;

end ;



Remarque : Cette fonction n'est disponible qu'à partir de Delphi7.

@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size ="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005

et je mets le 3 (nombre de fois que doit être présente la chaine vérifiée) où dans tout ca ?

-----------------------------------------

May Delphi and Php change the world ....
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Ben tu l'inclus simplement dans ton test :



if NombreDeSubStrDansStr( 'mot1' , Label1.Caption ) = 3 then

ShowMessage( 'Le mot est présent 3 fois' );


@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
dans ma fonction ou dans celle de ni69 le resultat retourné te donne le nombre de fois que le mot a été trouvé il te suffit ensuite de l'utiliser dans un test par exemple
if nombredemot('mot',chaine)=3 then showmessage('mot est present 3 fois')
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005

Merci à vous ni69 et jlen100 pour votre aide. Seulement, j'aurai besoin
de toi ni69 pour que tu m'expliques ce que veulent dire les différentes
lignes de ta fonction (qui m'a paru être la plus facile des 2 ), paske je connais pas grand chose dans les fonctions.

-----------------------------------------

May Delphi and Php change the world ....