类型转换(100分)

  • 主题发起人 主题发起人 iamacfo
  • 开始时间 开始时间
I

iamacfo

Unregistered / Unconfirmed
GUEST, unregistred user!
1、请问如何将枚举类型及子界类型变量值以字符形式输出
 
同转换数据变量的值没什么区别。
 
应该是没有办法的,因为编译后跟本就不存在那些字符。
 
如果非要转换,自已建一个转换表。
 
GetEnumValue,GetEnumName函数:

uses typeinfo;

procedure TForm1.Button1Click(Sender: TObject);
var
c : TFieldType;
begin
c := ftString;
//根据enum得到字符串
showmessage(GetEnumName(Typeinfo(TFieldType),Ord(c)));
// 根据字符串得到枚举类型
c := TFieldType(GetEnumValue(Typeinfo(TFieldType),'ftInteger'));
showmessage(GetEnumName(Typeinfo(TFieldType),Ord(c)));
end;
 
同意上面的!
uses typinfo //注意不是TypeInfo
type
Tem= (em1,em2,em3,em4);

var
t:Tem;
begin
t:=em1;
showmessage(GetEnumName(Typeinfo(Tem),Ord(t)));
end;
 
参见TypInfo单元中的
GetEnumName/GetEnumValue等函数
 
哦,呵呵~
原来rtti保存了它的信息:)
 
后退
顶部