Je trouve pas ou est le probleme [Fermé]

Signaler
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
-
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
-
Bonjour,
voilà le code source de mon programme qui est en c++builder 6
st=Form1->Memo1->Text;
st = st.Trim();
while ((x=st.Pos(" ")) > 0 )
{text= st.SubString(1,x);
int I = CompareStr(text,"salut");
if (I== 0)
{ ShowMessage ("hello");
}
st.Delete(1,x);
st = st.TrimLeft(); }


dans ce programme j'essaye de comparer deux chaines de caractère une se trouve dans un memo et l'autre est une constante ...avec le code source que j'ai écrie ça ne marche pas la comparaison ..est ce que vous pouvez m'aidez a trouvé ou est le probleme

merci d'avance






7 réponses

Messages postés
1259
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
383
Pas trop vite là!

"salut" et "salut", c'est pareil.
"salut" et "salut ", c'est différent. Remarque l'espace à la fin de la chaîne.

L'espace est un caractère ce qui rend la chaîne "salut " aussi différente de "salut" que par exemple "salutm" ou "salut3".

Il faudrait peut-être que tu appliques un Trim sur ta variable text avant de la comparer.

Autre note, je ne sais pas trop c'est quoi ta fonction CompareStr mais j'utilise normalement strcmp().

Bonne chance!
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 90111 internautes nous ont dit merci ce mois-ci

Messages postés
422
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
30 mai 2015
64
à la 3eme ligne, x n'aura jamais une autre valeur que 0 (ou null)
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
13
non il y a un texte dans le memo ce qui ne marche pas c'est la fonction de comparaison
Messages postés
422
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
30 mai 2015
64
(x=st.Pos(" ")) veut bien dire que x prend la valeur de la position du 1er espace du texte st. donc s'il n'y a pas d'espace dans le texte source, x sera toujours egale à zéro, non?
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
13
avant je vous remercie infiniment de me répondre
non la partie qui ne marche pas c'est celle là
int I = CompareStr(text,"salut");
if (I== 0)
{ ShowMessage ("hello");
}

par contre le code dont tu parle il fonctionne très bien si par exemple j'écris dans le memo "salut tout le monde "
au début st= "salut tout le monde"
x prend la position du après le mot salut
puis text = "salut" mais le problème si je fait la comparaison suivante ne fonctionne pas pas
int I = CompareStr(text,"salut"); malgrés que text= "salut "
Messages postés
1259
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
383
Qu'est-ce que tu veux dire par "la comparaison ne fonctionne pas"?

Si tu veux dire qu'elle retourne faux (autre que 0), c'est normal étant donné que "salut" et "salut " ne sont pas la même chaîne de caractères. Ces deux chaînes sont différentes.
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
13
ouiiiiiiiiiii merci c'est ça mon problème ....pour quoi "salut" et "salut" ne sont pas identique ????
et comment je peut faire une tel comparaison ???????
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
13
ouiiiiiiiiiiiiiiiiiiiii merciiiiiii infiniment ça marché on éliminant l'espace ()

la fonction AnsiCompareStr() fait la comparaison entre les deux chaines de caractéres en prenant en compte la casse ( majuscule et minuscule)
merci encore une fois