Другое решение этой проблемы, в случае, если вы не знаете точный тип перечисления в вашей функции, но вместо этого это TypeInfo, заключается в использовании процедуры Make из TValue.
procedure Make(AValue: NativeInt; ATypeInfo: PTypeInfo; out Result: TValue); overload; static;
Вот пример (Из синтаксического анализатора XML): это позже используется для TRTTIField / TRTTIProperty.SetValue ()
function EnumNameToTValue(Name: string; EnumType: PTypeInfo): TValue;
var
V: integer;
begin
V:= GetEnumValue(EnumType, Name);
TValue.Make(V, EnumType, Result);
end;
Надеюсь, это поможет вам.