System.SysUtils.ERangeError
Delphi
ERangeError = class(EIntError);
C++
class PASCALIMPLEMENTATION ERangeError : public EIntError
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | System.SysUtils.pas System.SysUtils.hpp |
System.SysUtils | System.SysUtils |
Description
ERangeError indique la violation d'un intervalle d'entiers.
ERangeError se produit dans du code Delphi quand la vérification des intervalles est activée et qu'une valeur ordinale sort de l'intervalle déclaré. Par défaut, le compilateur Delphi désactive la vérification des intervalles. Le compilateur peut toujours détecter les erreurs d'intervalles évidentes, ce qui évite la compilation du code qui suit.
Remarque : La vérification des intervalles n'est pas une fonctionnalité C++. Toutefois, ERangeError peut se produire quand du code C++ appelle du code Delphi.
Exemple 1 (vérification lors de la compilation) :
var
SmallValue: 1 .. 3;
SevenBits: byte;
begin
SmallValue := 4; // E1012 Constant expression violates subrange bounds
SevenBits := 256; // E1012 Constant expression violates subrange bounds
// ...
Le compilateur ne peut pas anticiper les valeurs hors limites fournies à l'exécution.
Exemple 2 (vérification lors de l'exécution) :
var
SmallValue: 1 .. 3;
SevenBits: byte;
ThirtyTwoBits: Integer;
begin
ThirtyTwoBits := 4;
SmallValue := ThirtyTwoBits; // Assigns 4 to SmallValue (SmallValue is stored as a Byte)
ThirtyTwoBits := 256;
SevenBits := ThirtyTwoBits; // Assigns 0 to SevenBits (high-order bits discarded)
// ...
Si la vérification des intervalles est activée dans l'exemple 2, les deux affectations hors limites déclenchent des exceptions ERangeError.
Pour activer la vérification des intervalles, utilisez l'option de projet correspondante de l'EDI ou la directive $R+.
La vérification des intervalles est considérée comme une fonctionnalité de débogage. Elle produit des exécutables plus gros et plus lents.