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 : 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;
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+