saluuuuuuuuuuut
j'ai un probleme quand je compare un chiffre existe dans une case de StringGrid et l'autre dans un ComboBox par exemple quand je tombe dans 2 et 11 me met que 2 et superieur que 11 .comment je résoudre ce probleme SVP.MERCI d'avance
Version imprimable
saluuuuuuuuuuut
j'ai un probleme quand je compare un chiffre existe dans une case de StringGrid et l'autre dans un ComboBox par exemple quand je tombe dans 2 et 11 me met que 2 et superieur que 11 .comment je résoudre ce probleme SVP.MERCI d'avance
C'est simplement que ton test n'est pas bon...
Poste ici le code de ton test pour qu'on puisse t'aider...
C'est parce que tu compare des chaine de caractère, il faut les convertir en int avant de les comparer ;)
Petite précision pour StrToInt() ou StrToFloat(), la conversion des chiffre a virguel est defois aléatoire. StrToDouble() fonctionne mieu. pourquoi ... je sais pas vraiment.
salut .merci
j'ai utilisé ce code
mon probleme maintenant que la form4->StringGrid5->Cells[2][i] contient des donné sous forme d'intervalle exemple [2,8]et je veut tester si la valeur deCode:
1
2
3
4
5
6
7
8
9
10 int e,f; String chaine1,chaine2; {chaine1= Form2->ComboBox2->Text; chaine2= Form4->StringGrid5->Cells[2][i]; e=StrToInt(chaine1); f= StrToInt(chaine2); {if(e > f) {Form3->Visible=true; } }}
Form2->ComboBox2->Text elle n'est pas entre [2,8] la form3 s'affiche
merci d'avance pour votre aide
D'un cas général,pour tester si x est dans l'intervalle [a,b],on peut effectuer le test suivant :
Code:
1
2
3 if ((x>=a) && (x<=b)) // && représente le ET logique { }
merci beaucoup pour votre aide!!:D
Bojour tout le mode
j'ai un autre probleme j'ai utilisé ce code
ca marché mais dans par exemple j'ai [10,15] ça marche pasCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 {String chaine1,chaine;char M1,M2;int a,b,e; {chaine1= Form4->ComboBox1->Text; e=StrToInt(chaine1); chaine= Form4->StringGrid6->Cells[2][1]; M1=chaine[2]; a=StrToInt(M1); M2= chaine[4]; b=StrToInt(M2); {if(e >= a&& e<= b) {Form6->Visible=true;} else {Form3->Visible=true;} }
merci d'avance pour votre aide
L'erreur vient des deux ligne suivante :
car tu ne récupère qu'un seul caractère et donc ca ne fonctionne qu'avec des nombres à 1 chiffre.Code:
1
2 M1=chaine[2]; M2= chaine[4];
Pour le faire correctement il faut que tu utilise SubString et Pos :
(Le code est fait de tête et peut comporter des erreurs)Code:
1
2 M1=chaine.SubString(chaine.Pos("[")+1,chaine.Pos(",")-1); M2= chaine.SubString(chaine.Pos(",")+1,chaine.Pos("]")-1);
ça marche pas!!!!!!!!:(
j'ai remarqué que ce code il prend aussi la vergule et le crochet.
merci d'avance pour votre aide.
Effectivement et pour deux raisons, tout d'abord, M1 et M2 sont déclaré en char alors qu'il faudrait les déclarer en String et ensuite mon code n'est pas tout a fait bon, il faut utiliser celui-ci :
Code:
1
2 M1=chaine.SubString(chaine.Pos("[")+1,(chaine.Pos(",")-chaine.Pos("["))-1); M2= chaine.SubString(chaine.Pos(",")+1,(chaine.Pos("]")-chaine.Pos(","))-1);
merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiii beaucoup pottier ca marche bien:D