gpt4 book ai didi

delphi - 如何使用 RTTI 区分 TDateTime 属性和 Double 属性?

转载 作者:行者123 更新时间:2023-12-03 14:35:09 24 4
gpt4 key购买 nike

使用Delphi 2010中的RTTI系统,有没有办法找出属性是否是TDateTime?目前,每当我回调 asVariant 以及检查属性类型时,它都会将其视为 double 。这是因为它只能看到基本类型吗? (TDateTime = double )

最佳答案

尝试检查 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

关于delphi - 如何使用 RTTI 区分 TDateTime 属性和 Double 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com