Ce que l'on peut avantageusement raccourcir de la façon suivante
procedure TForm1.Button2Click(Sender: TObject);
var
AInt: integer;
begin
CheckBox1.Checked := TryStrToInt(Edit1.Text, AInt);
end;
Si tu veux contrôler plus finement le résultat, alors il vaut opter pour une solution personnalisée :
procedure TForm1.Button2Click(Sender: TObject);
begin
try
StrToInt(Edit1.Text)
except
ShowMessage('Saisie incorrecte');
Edit1.SetFocus;
end;
end;
ou, traduit sous forme de fonction :
function IsNumeric2(const Str: string):boolean;
begin
Result := True;
try
StrToInt(Str);
except
Result := False
end;
end;
Désolé PowerII, mais ton code a 2 inconvénients majeurs :
- le résultat est indéfini si aucun caractère n'est un chiffre
- si le dernier caractère examiné dans la chaine S n'est pas un chiffre, alors quel est est le résultat renvoyé ?
Pour les fainéants (dont je fais partie), il est plus rapide d'écrire (comme quoi ça a aussi du bon :-p ):
if S[i] in ['0'..'9'] then