System.SysUtils.ERangeError

De Appmethod Libraries
Aller à : navigation, rechercher

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

Object Pascal

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 Object Pascal 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 Object Pascal 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 Object Pascal.

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