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
La ListBox permet la sélection du type.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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+
Partager