Fonction Pos(). [Résolu]

Becracker 116 Messages postés dimanche 12 décembre 2004Date d'inscription 25 septembre 2005 Dernière intervention - 4 sept. 2005 à 01:44 - Dernière réponse : ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention
- 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.



Merci à tous.

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

May Delphi and Php change the world ....
Afficher la suite 

7 réponses

Répondre au sujet
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 4 sept. 2005 à 07:57
+3
Utile
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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 4 sept. 2005 à 14:16
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ni69
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 4 sept. 2005 à 12:50
0
Utile
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 !
Commenter la réponse de ni69
Becracker 116 Messages postés dimanche 12 décembre 2004Date d'inscription 25 septembre 2005 Dernière intervention - 4 sept. 2005 à 13:53
0
Utile
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 ....
Commenter la réponse de Becracker
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 4 sept. 2005 à 13:58
0
Utile
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 !
Commenter la réponse de ni69
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 4 sept. 2005 à 14:04
0
Utile
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')
Commenter la réponse de jlen100
Becracker 116 Messages postés dimanche 12 décembre 2004Date d'inscription 25 septembre 2005 Dernière intervention - 4 sept. 2005 à 14:10
0
Utile
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 ....
Commenter la réponse de Becracker

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.