利用RTTI非常简单!既然看到了就帮下
见: TypInfo.pas 下的SetToString函数对对象的集合属性输出。
如果你要对某个集合变量输出,那么就需要我写的这个函数:
function SetToString(TheEnumTypeInfo: PTypeInfo
Value: Integer
Brackets: Boolean = False): string;
var
S: TIntegerSet;
I: Integer;
begin
Result := '';
Integer(S) := Value;
for I := 0 to SizeOf(Integer) * 8 - 1 do
if I in S then
begin
if Result <> '' then
Result := Result + ',';
Result := Result + GetEnumName(TheEnumTypeInfo, I);
end;
if Brackets then
Result := '[' + Result + ']';
end;
使用方法:
type
TMyEnum = (one, two, three);
TMySet = set of TMyEnum;
var
a: TMySet = [one, two];
s: string;
s := SetToString(TypeInfo(TMyEnum), Byte(a), True);