Verifier si une chaine est numerique

seast Messages postés 7 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 25 mars 2005 - 24 nov. 2003 à 18:43
seast Messages postés 7 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 25 mars 2005 - 25 nov. 2003 à 13:53
Bonjour,
Existe-t-il une fonction permettant de verifier si une chaine est numerique ou non, ou bien faut-il verifier les caracteres les uns apres les autres?
merci. Seast

3 réponses

PowerII Messages postés 40 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 12 juillet 2009
24 nov. 2003 à 19:31
Bonjour,
À ma connaissance, non, mais tu peux toujours utiliser une petite fonction simple du genre :

function IsNumeric (const S : string):Boolean;
 var i : integer;
begin
 for i:=1 to Length (S) do
  if S[i] in ['0','1','2','3','4','5','6','7','8','9'] then result:=True;
end;


@++ PowerII
;-)
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
25 nov. 2003 à 00:12
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 
0
seast Messages postés 7 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 25 mars 2005
25 nov. 2003 à 13:53
Merci à tous les deux !
J'ai découvert le bloc try..except, très intéressant 8-)
0
Rejoignez-nous