System.SysUtils.ERangeError

De RAD Studio API Documentation
Aller à : navigation, rechercher

System.SysUtils.EIntErrorSystem.SysUtils.EExternalSystem.SysUtils.ExceptionSystem.TObjectERangeError

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.

Voir aussi