CnPack Forum


 
Subject: 问一个和专家包不相关的问题
Jackey
新警察
Rank: 1



UID 36058
Digest Posts 0
Credits 25
Posts 8
点点分 25
Reading Access 10
Registered 2008-1-14
Status Offline
Post at 2011-4-19 14:34  Profile | Blog | P.M. 
问一个和专家包不相关的问题

在其他的几个论坛发了贴,没人答复,来这里试试。

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;
这里是万一博客里面的代码,他也只实现了读取枚举类型的数据,没有说怎么写回去,请问这里有人知道吗?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6772
Posts 3561
点点分 6772
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2011-4-19 18:45  Profile | Blog | P.M. 
写回去?譬如修改Integer类型的上下限?貌似不合适吧?
Top
Jackey
新警察
Rank: 1



UID 36058
Digest Posts 0
Credits 25
Posts 8
点点分 25
Reading Access 10
Registered 2008-1-14
Status Offline
Post at 2011-4-20 09:04  Profile | Blog | P.M. 
上下限能通脱MinValue和MaxValue得到,这个到不是问题,而且我想Delphi本身都能通过RTTI把数据写回应该就有方法的,只是我不知道。呵呵。
Top
 




All times are GMT++8, the time now is 2024-5-27 06:17

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007690 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP