Subject:
问一个和专家包不相关的问题
[Print This Page]
Author:
Jackey
Time:
2011-4-19 14:34
Subject:
问一个和专家包不相关的问题
在其他的几个论坛发了贴,没人答复,来这里试试。
procedure TForm1.Button1Click(Sender: TObject);
var
t: TRttiOrdinalType;
begin
Memo1.Clear;
//先从类型名获取类型信息对象
t := TRttiContext.Create.GetType(TypeInfo(Byte)) as TRttiOrdinalType;
Memo1.Lines.Add(Format('%s - %s', [t.Name, t.QualifiedName]));
Memo1.Lines.Add(Format('Size: %d', [t.TypeSize]));
Memo1.Lines.Add('QualifiedName: ' + t.QualifiedName);
Memo1.Lines.Add(Format('Min,Max: %d , %d', [t.MinValue, t.MaxValue]));
Memo1.Lines.Add(EmptyStr); //空字串
//可以用 AsOrdinal 方法代替前面的 as TRttiOrdinalType
t := TRttiContext.Create.GetType(TypeInfo(Word)).AsOrdinal;
Memo1.Lines.Add(Format('%s: %s', [t.Name, t.QualifiedName]));
Memo1.Lines.Add(Format('Size: %d', [t.TypeSize]));
Memo1.Lines.Add(Format('Min,Max: %d , %d', [t.MinValue, t.MaxValue]));
Memo1.Lines.Add(EmptyStr);
//也可以直接强制转换
t := TRttiOrdinalType(TRttiContext.Create.GetType(TypeInfo(Integer)));
Memo1.Lines.Add(Format('%s: %s', [t.Name, t.QualifiedName]));
Memo1.Lines.Add(Format('Size: %d', [t.TypeSize]));
Memo1.Lines.Add(Format('Min,Max: %d , %d', [t.MinValue, t.MaxValue]));
Memo1.Lines.Add(EmptyStr);
end;
这里是万一博客里面的代码,他也只实现了读取枚举类型的数据,没有说怎么写回去,请问这里有人知道吗?
Author:
Passion
Time:
2011-4-19 18:45
写回去?譬如修改Integer类型的上下限?貌似不合适吧?
Author:
Jackey
Time:
2011-4-20 09:04
上下限能通脱MinValue和MaxValue得到,这个到不是问题,而且我想Delphi本身都能通过RTTI把数据写回应该就有方法的,只是我不知道。呵呵。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0