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.