首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用RTTI区分TDateTime属性和双重属性?

如何使用RTTI区分TDateTime属性和双重属性?
EN

Stack Overflow用户
提问于 2011-10-20 21:45:37
回答 1查看 2.5K关注 0票数 19

在Delphi2010中使用RTTI系统,有没有办法确定一个属性是否是TDateTime?当我回调asVariant和检查属性类型时,它当前将其视为double。这是因为它只能看到基类型吗?(TDateTime =双精度)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-20 21:58:51

尝试检查TRttiProperty.PropertyTypeName属性

我没有Delphi 2010,但它可以在XE中工作。

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Classes,
  Rtti;

type
  TMyClass =class
  private
    FDate: TDateTime;
    FProp: Integer;
    FDate2: TDateTime;
    FDate1: TDateTime;
  public
   property Date1 : TDateTime read FDate1  Write FDate1;
   property Prop : Integer read FProp  Write FProp;
   property Date2 : TDateTime read FDate2  Write FDate2;
  end;

var
 ctx : TRttiContext;
 t :  TRttiType;
 p :  TRttiProperty;
begin
 ctx := TRttiContext.Create;
 try
   t := ctx.GetType(TMyClass.ClassInfo);
   for p in  t.GetProperties do
    if CompareText('TDateTime',p.PropertyType.Name)=0 then
     Writeln(Format('the property %s is %s',[p.Name,p.PropertyType.Name]));
 finally
   ctx.Free;
 end;
  Readln;
end.

此代码返回

the property Date1 is TDateTime
the property Date2 is TDateTime
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7836880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档