احفظ هذا الكود في ملف Conversions.pas (يجب ان لا تغير اسم الملف) واضفه لتطبيقك
unit Conversions;
interface
uses
System.SysUtils, System.TypInfo;
type
TConversions<T> = record
class function StringToEnumeration(x: String): T; static;
class function EnumerationToString(x: T): String; static;
end;
implementation
class function TConversions<T>.StringToEnumeration(x: String): T;
begin
case Sizeof(T) of
1: PByte(@Result)^ := GetEnumValue(TypeInfo(T), x);
2: PWord(@Result)^ := GetEnumValue(TypeInfo(T), x);
4: PCardinal(@Result)^ := GetEnumValue(TypeInfo(T), x);
end;
end;
class function TConversions<T>.EnumerationToString(x: T): String;
begin
case Sizeof(T) of
1: Result := GetEnumName(TypeInfo(T), PByte(@x)^);
2: Result := GetEnumName(TypeInfo(T), PWord(@x)^);
4: Result := GetEnumName(TypeInfo(T), PCardinal(@x)^);
end;
end;
end.
طريقة الاستخدام:
( لا حاجة لإنشاء اوبجكت من نوع TConversions )
...
var
myEnum: (meCustomer, meSupplyer, meTeacher, meEmployee)
...
// From string to enum
var
myValue: myEnum;
...
myValue := TConversions<myEnum>.StringToEnumeration('meTeacher');
// from enum to string
var
myStr: String;
...
myStr := TConversions<myEnum>.EnumerationToString(meCustomer);