Paste::View Paste

FPC Enum<>String

Martok 2013-04-06 22:35:25
  1. uses
  2.   TypInfo;
  3.  
  4. type
  5.   generic TEnum<T> = class
  6.     class function {%H-}ToString(Value: T): String;
  7.     class function FromString(Str: String): T;
  8.   end;
  9.  
  10.   TTest = (test1,test2,test3);
  11.   TEnumTTest = specialize TEnum<TTest>;
  12.  
  13. implementation
  14.  
  15. { TEnum }
  16.  
  17. class function TEnum.ToString(Value: T): String;
  18. begin
  19.   Result:= GetEnumName(TypeInfo(T), Integer(Value));
  20. end;
  21.  
  22. class function TEnum.FromString(Str: String): T;
  23. begin
  24.   Result:= T(GetEnumValue(TypeInfo(T), Str));
  25. end;
  26.  
  27.  
  28. var
  29.   a: TTest;
  30. begin
  31.   Caption:= TEnumTTest.ToString(Test1);
  32.   a:= TEnumTTest.FromString('Test2');
  33. end;
  34.  
View Raw