TEnum = (Anfang = 1, Mitte = 3, Ende = 5);
...
Gibt es eine saubere Methode, einen Typ aus drei Werten tatsächlich nur aus drei Werten bestehen zu lassen (und trotzdem eine selbstgewählte Numerierung beizubehalten)?
Man muss sich halt darüber in Klaren sein, daß man mit dem Zuweisen von Integerkonstanten bei der Deklaration der Enum-Werte eine Ordnungszahl definiert und nicht etwa einen willkürlichen Wert vergibt. Wenn man bei diesen Ordnungszahlen Lücken lässt, dann wird der Enum-Typ implizit um diese Lücken erweitert. Demnach sind solche Zuweisungen durchaus gültig:
Delphi-Quellcode:
type
TEnum = (Anfang = 1, Mitte = 3, Ende = 5);
var
pos: TEnum;
begin
pos := TEnum(2);
pos := TEnum(4);
end.
Zwar gibt es im Source dann keine Identifier mehr, die diese Werte darstellen, aber es sind immer noch gültige Werte für TEnum.