Fonction Pos(). [Résolu]

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



Merci à tous.

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

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

Votre réponse

7 réponses

Meilleure réponse
jlen100
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
- 4 sept. 2005 à 07:57
3
Merci
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;

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de jlen100
Meilleure réponse
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Dernière intervention
5 juillet 2010
- 4 sept. 2005 à 14:16
3
Merci
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 !

Merci ni69 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de ni69
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Dernière intervention
5 juillet 2010
- 4 sept. 2005 à 12:50
0
Merci
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
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
25 septembre 2005
- 4 sept. 2005 à 13:53
0
Merci
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
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Dernière intervention
5 juillet 2010
- 4 sept. 2005 à 13:58
0
Merci
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
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
- 4 sept. 2005 à 14:04
0
Merci
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
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
25 septembre 2005
- 4 sept. 2005 à 14:10
0
Merci
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.