Becracker
Messages postés116Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention25 septembre 2005
-
4 sept. 2005 à 01:44
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 2010
-
4 sept. 2005 à 14:16
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.
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 4 sept. 2005 à 14:16
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éelorsque la réponse vous convient !
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201412 4 sept. 2005 à 07:57
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;
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201412 4 sept. 2005 à 14:04
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')
Becracker
Messages postés116Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention25 septembre 2005 4 sept. 2005 à 14:10
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.