Vérification de type avec Try Except
Bonjour,
Je voudrais générer une erreur par Try Except plutôt que de vérifier les intervalles du type numérique.
Par exemple
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
| Var
n1 : byte; // 0..255
n2 : ShortInt; // -128..127
n3 : Word; // 0..65535
procedure TForm1.EdValIntKeyPress(Sender: TObject; var Key: char);
begin
if not (key in ['0'..'9',#0..#31]) then key:=#0
else begin
EdValInt.Text := EdValInt.Text + Key;
if not (Key in [#0..#31]) then
begin {vérification des types}
Try
Case LBTypeInt.ItemIndex of
0: n1:= StrToInt(EdValInt.Text); // Byte
1: n2:= StrToInt(EdValInt.Text); // ShortInt
2: n3:= StrToInt(EdValInt.Text); // Word
end;
Except
on EconvertError do
MessageDlg('Erreur : Vous devez entrer un entier', mtError, [mbOk], 0);
// +#10#13+'Le séparateur décimal est : '+DecimalSeparator, mtError, [mbOk], 0);
end;
end;
end;
end; |
La ListBox permet la sélection du type.
Les variables n1 à n3 sont déclarés selon les types choisis...
Mais l'Affectation à ces variables de la saisie dans les variables se fait de manière tronquée je suppose sans générer de type d'erreur dans le Try:
Par exemple, si je choisis le type Byte et que je saisi 555 => ça doit générer une erreur car n1 ne doit pas dépasser 255...
y a t-il une astuce simple ou je dois vérifier par des tests les intervalles numériques de la saisie en fonction du type?
Merci, A+