slt a tousse,j'ai créé un memo, je veux dire a mon compilateur
quelque soit l'entier (int)Code:
1
2
3 AnsiString ligne=Memo1->Lines->Strings[line]; if(ligne[i]== int) opération;
comment effectuer cette condition ?
merci
Version imprimable
slt a tousse,j'ai créé un memo, je veux dire a mon compilateur
quelque soit l'entier (int)Code:
1
2
3 AnsiString ligne=Memo1->Lines->Strings[line]; if(ligne[i]== int) opération;
comment effectuer cette condition ?
merci
Peut-être qu'il y a d'autre façon, mais présentement la façon qui me vient en tête est:
PS: Le code à été pris dans FAQCode:
1
2
3
4
5
6
7
8
9 int i; try { i = StrToInt(ligne[i]); } catch(EConvertError &Exception) { ShowMessage("Ceci n'est pas un entier"); }
Sinon il y a une solution sympa avec l'utilisation des expressions régulières.
Et bien tu peut tester avec une expression régulière si ta chaine respecte une syntaxe prédéfinie (dans ton cas juste si elle est composée par un entier, par exemple avec l'expression ^([0-9]+) ).
Un site sympa pour tester tes modèles avec les chaines de test.
http://www.annuaire-info.com/outil-r...ion-reguliere/
ps : l'utilisation dans ce cas des expressions régulière est un peu 'limite' mais cela fonctionne et c'est quelque chose de très puissant et intéressant selon moi.
Salut !
On peut aussi faire comme ceci :
Code:
1
2 #include <limits.h>
J'ai testé comme ceci :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 bool IsInt(AnsiString N) { int n = N.Length(); bool f = false; int i = 1; if(n != 0) { n++; i = i + ( (N[1] == '+') || (N[1] == '-') ); f = (i < n); for(int j = i; f && (j < n); j++) { f = f && (N[j] >= '0') && (N[j] <= '9'); } } // Tester si la valeur entre dans un int if(f) { double d = N.ToDouble(); f = (d >= INT_MIN) && (d <= INT_MAX); } return f; }
A plus !Code:
1
2
3
4
5
6 void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { if(IsInt(Edit1->Text)) Shape1->Brush->Color = clLime; else Shape1->Brush->Color = clRed; }
J'ai pas BCB sous la main pour tester, je te propose une idée du genre :
Code:
1
2
3 if(ClassNameIs(Edit1 -> Text) == ...) ...