System.SysUtils.ERangeError

Delphi
ERangeError = class(EIntError);
C++
class PASCALIMPLEMENTATION ERangeError : public EIntError
Eigenschaften
| Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet | 
|---|---|---|---|---|
| class | public | System.SysUtils.pas System.SysUtils.hpp | System.SysUtils | System.SysUtils | 
Beschreibung
ERangeError gibt eine Integer-Bereichsverletzung an.
ERangeError tritt in Delphi-Code auf, wenn die Bereichsprüfung aktiviert ist, und ein Ordinalwert den deklarierten Bereich überschreitet. Standardmäßig wird die Bereichsprüfung vom Delphi-Compiler deaktiviert. Der Compiler kann offensichtliche Bereichsfehler immer finden; der folgende Code wird daher nicht compiliert.
Hinweis: Die Bereichsprüfung steht in C++ nicht zur Verfügung. ERangeError kann jedoch auftreten, wenn C++ Delphi-Code aufruft.
Beispiel 1 (Prüfung beim Compilieren):
 var
   SmallValue: 1 .. 3;
   SevenBits: byte;
 
 begin
   SmallValue := 4; // E1012 Constant expression violates subrange bounds
   SevenBits := 256; // E1012 Constant expression violates subrange bounds
 
   // ...
Der Compiler kann keine Bereichsüberschreitungen, die zur Laufzeit auftreten, erkennen.
Beispiel 2 (Prüfung während der Laufzeit):
 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)
 
   // ...
Wenn in Beispiel 2 die Bereichsprüfung aktiviert ist, lösen beide Zuweisungen eine ERangeError-Exception aus.
Mit den Projektoptionen oder der Direktive $R+ aktivieren Sie die Bereichsprüfung.
Die Bereichsprüfung wird zu den Debugging-Funktionen gezählt. Sie erzeugt größere und langsamere, ausführbare Dateien.