eine allgemeine Funktion ist nicht mögilich, denn:
- Enumeratoren verfügen über keine Typeninformationen
- High/Low wird vom Compiler durch Konstanten erstetzt ... dieses sind keine Funktionen
also selbst wenn es möglich wäre alle Enum-Typen an eine Funktion zu übergeben, dann wären innerhalb der Funktion keine Informationen für High/Low verfügbar.
Heißt EnumLength kann immer nur für einen Typ erstellt werden!
allerdings liefert hier EnumLength die Werte für den Typ Integer und nicht für TMyEnum
Also: dieses funktioniert nicht.
Delphi-Quellcode:
function EnumLength(Enum: Integer): Integer;
var i: Integer;
begin
result := 0;
for i := Low(Integer) to High(Integer) do
inc(result);
end;
Var X: TMyEnum;
Y: TMyEnum2;
EnumLength(Integer(X));
EnumLength(Integer(Y));
Zusammengefasst:
direkte Lösungen wurden alle schon aufgezählt (Zusammenfassung siehe Beitrag #14)
allgemeine Funktionen sind nicht möglich.