ich habe einen ordinalen Typ mit begrenzter Größe. Aus einer Datenbank kann ich aber nur allgemeine Integer laden. Für den Fall, dass der Benutzer die Datenbank manipuliert hat, möchte ich beim Einlesen der Daten, den Wert automatisch "korrigieren" (d.h. auf den Wertebereich begrenzen). RangeChecking durch den Compiler hat den unangenehmen Seiteneffekt einer Exception (die ich gerne umgehen möchte) und beim operator overloading gibts nen Fehler:
Code: Alles auswählen
type
TRating = 0..5;
operator := (i: Integer) r: TRating; // Error: Impossible operator overload
begin
if i < low(TRating) then
r := low(TRating) else
if i > high(TRating) then
r := high(TRating) else
r := i;
end;