Je trouve pas ou est le probleme

info2009 Messages postés 851 Statut Membre -  
info2009 Messages postés 851 Statut Membre -
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

Doctor C Messages postés 648 Statut Membre 399
 
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
UgglyBoy Messages postés 440 Statut Membre 64
 
à la 3eme ligne, x n'aura jamais une autre valeur que 0 (ou null)
0
info2009 Messages postés 851 Statut Membre 15
 
non il y a un texte dans le memo ce qui ne marche pas c'est la fonction de comparaison
0
UgglyBoy Messages postés 440 Statut Membre 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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
info2009 Messages postés 851 Statut Membre 15
 
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 "
0
Doctor C Messages postés 648 Statut Membre 399
 
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.
0
info2009 Messages postés 851 Statut Membre 15
 
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 ???????
0
info2009 Messages postés 851 Statut Membre 15
 
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
0