Wie ermittelst du das? Bei mir liefert ord(myEnum) auch -1;
Mit meiner alten Prozedur werte ich Temp aus
Delphi-Quellcode:
class function TEnumFunctions.GetValue<T>(AValue: string): T;
var
Tipo: PTypeInfo;
Temp: Integer;
PTemp: pointer;
begin
Tipo := TypeInfo(T);
Temp := GetEnumValue(Tipo, AValue);
if Temp < 0 then
Temp := 0;
PTemp := @Temp;
Result := T(PTemp^);
end;
Das geht mit TRttiEnumerationType.GetValue<T> natürlich nicht (also innerhalb der Funktion GetValueX), weil man dort den Enum-Typ nicht kennt.