M61*_*610 14 delphi string enumeration
我知道我很久以前就能做到这一点,所以一定有可能.
我想将一个项目(例如组件的align属性alNone)转换为我可以保存,显示的字符串等等.我知道我可以获得字节值并得出我自己的文本,但我确信有更直接的方法.
比如我想......
var S:string;
S:= somehow(Form.Align);
ShowMessage(S);
Run Code Online (Sandbox Code Playgroud)
然而,在某种程度上,我将表单的align属性的设置转换为字符串,例如"alNone".
Jen*_*olt 13
您可以使用RTTI执行此操作:
uses
RTTI;
procedure TForm40.FormCreate(Sender: TObject);
var
sAlign: string;
eAlign: TAlign;
begin
//Enum to string
sAlign := TRttiEnumerationType.GetName(Align);
//string to enum
eAlign := TRttiEnumerationType.GetValue<TAlign>(sAlign);
end;
Run Code Online (Sandbox Code Playgroud)
Wos*_*osi 11
Form.Align
不是价值TPersistent
.它的值TAlign
是枚举类型.
您可以使用以下代码将枚举值转换为字符串:
type TEnumConverter = class
public
class function EnumToInt<T>(const EnumValue: T): Integer;
class function EnumToString<T>(EnumValue: T): string;
end;
class function TEnumConverter.EnumToInt<T>(const EnumValue: T): Integer;
begin
Result := 0;
Move(EnumValue, Result, sizeOf(EnumValue));
end;
class function TEnumConverter.EnumToString<T>(EnumValue: T): string;
begin
Result := GetEnumName(TypeInfo(T), EnumToInt(EnumValue));
end;
Run Code Online (Sandbox Code Playgroud)
您需要添加System.TypInfo
用途.
这样做得到Form.Align
字符串:
S := TEnumConverter.EnumToString(Form.Align)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15073 次 |
最近记录: |