Die einzige Möglichkeit, die mir einfällt, wäre:
Delphi-Quellcode:
Type
TEnum = (Anfang = 1, Mitte = 3, Ende = 5);
Function NextEnum (e: TEnum) : TEnum;
Begin
case e of
Anfang : Return Mitte;
Mitte : Return Ende;
else Raise EInvalidArgument.Create; // K.A. wie das in Delphi heißt.
End
End;
...
e := Anfang;
While e <> Ende Do begin
e :=NextEnum(e);
end;
Anders würde der Compiler eine Sukkzessor-Funktion auf TEnum auch nicht umsetzen.
Wieso willst Du den Enum-Elementen eigentlich nicht fortlaufende Werte geben? Wenn Du gleichzeitig iterieren musst, könntest Du doch eine Abbildungsfunktion schreiben, also z.B. so:
Delphi-Quellcode:
Type
TEnum := (Anfang, Mitte, Ende);
Const
EnumWerte : Array [TEnum] Of Integer = (1,3,5);
EnumNamen : Array [TEnum] Of String = ('Anfang','Mitte','Ende');