System.SysUtils.ERangeError

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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

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.

Siehe auch