请问:有什么好的方法可以将集合或枚举类型转化为字符串,将字符串转化为集合或枚举类型?(50分)

M

mycwcgr

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:有什么好的方法可以将集合或枚举类型转化为字符串,将字符串转化为集合或枚举类型?
 
使用TStringList。
 
奇怪的想法,恐怕做不到!
 
字符串的枚举类型吗?我只会将数组类型转换:
str:array[0..20]of char;
str1:=@str;
str1:=pchar(str);
…………
 
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;
 
试一试这个:
Unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
Tmj = (tm1,tm2,tm3,tm4);//声明枚举类型
Tjh = set of tmj;//声明集合类型
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var tmmj : Tmj;//枚举类型
tmjh : Tjh;//集合类型
tmstr : String;
tmmj2 : Tmj;//枚举类型
tmjh2 : Tjh;//集合类型
begin
tmmj := tm1;
tmstr := IntToStr(BYTE(tmmj));
//将枚举类型转化为字符串
tmmj2 := Tmj(BYTE(StrToInt(tmstr)));
//将字符串类型转化为枚举类型
if tmmj2 = tm1 then
ShowMessage('枚举类型转化成功');
tmjh := [tm1,tm3];
tmstr := IntToStr(BYTE(tmjh));//将集合类型转化为字符串
tmjh2 := Tjh(BYTE(StrToInt(tmstr)));
//将字符串类型转化为集合类型
if tm1 in tmjh2 then
ShowMessage('集合类型转化成功');
end;

end.
 
bluerain 的办法是正解,别忘记 uses typeinfo
我估计 Delphi 的 Object Inspector 也是这样干的
 
哪里有GetEnumName这个函数啊,我怎么找不到啊?是Delphi6的吗?
 
要想用GetEnumName函數,一定得
uses typinfo;
不是typeinfo.
 
枚举类型里面的元素为什么不能是汉字?
 
接受答案了.
 
顶部