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

):
if S[i] in ['0'..'9'] then
|
May Delphi be with you