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

2024-04-07

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


尝试检查Name的财产TRttiProperty.PropertyType http://docwiki.embarcadero.com/VCL/XE2/en/Rtti.TRttiProperty.PropertyType

我没有 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 RTTI 区分 TDateTime 属性和 Double 属性? 的相关文章

随机推荐

  • 从 R 中的库效果中删除图​​中第三轴和第四轴上的刻度

    我想知道是否有一种方法可以删除库生成的绘图的第三轴和第四轴上的刻度线 轴 effects如下所示 library effects m lt lm Fertility data swiss plot allEffects m rug FALS
  • “无法通过密钥查找会话:connect.sid” - session.socket.io

    我对 NodeJS 开发还很陌生 我正在使用会话 socket io https github com functioncallback session socket io插件在我的 Express 应用程序中 但在调试应用程序时出现此错误
  • 没有这样的模块“SwiftyDropbox”

    首先 我正在使用 Xcode 8 和 Swift 3 现在我想将 Dropbox API SwiftyDropbox 集成到我的应用程序中 因为我对 iOS 编程很陌生 所以我不确定我是否正确完成了所有步骤 我决定使用 CocoaPods
  • 适配包含 ref 参数的 C# 事件

    我所处的情况是 我必须使用包含很多事件的第三方库 而且恕我直言 写得不是很好 它触发了我必须在代码中处理的事件 但我试图将其抽象出来 以便能够对依赖于该库的其余代码进行单元测试 因此我需要一个适配器 问题是一些事件是委托类型的 需要ref参
  • 无法通过 Gmail 插件访问 Gmail 草稿

    我正在尝试使用 Gmail 插件访问 Gmail 中的所有草稿 但它会记录如下错误Access denied Missing access token for per message scope authorization line 8 f
  • AWS Lambda 和 Apache Airflow 集成

    想知道是否有人可以阐明这个问题 我正在尝试找到 Airflow REST API URL 以启动 DAG 以从 AWS Lambda 函数运行 到目前为止 除了查看 Apache 孵化器站点提供的所有相关文档之外 解决该问题的唯一指导是在
  • 读取失败:Firebase 中的权限被拒绝错误

    我正在关注此教程link https www simplifiedcoding net firebase android tutorial writing firebase data 适用于 Android 中的 Firebase 我只是想
  • div 不会一直水平扩展

    为什么我的 div 左右有空白 render return div div h2 TEXT h2 div div 而在我的css intro body height 500px background color 3BC5C3 我尝试过设置b
  • 使用 Java 解密 OpenSSL PEM 编码的 RSA 私钥?

    我有一个加密的私钥并且我知道密码 我需要使用 Java 库对其进行解密 不过 除非没有其他选择 否则我不想使用 BouncyCastle 根据以往的经验 改动太多 文档不够 私钥的形式如下 BEGIN RSA PRIVATE KEY Pro
  • IMAP协议搜索命令的搜索条件

    我从这里读到 http docs python org 2 library imaplib html IMAP4 search charset criterion imaplib 有搜索方法供我从我的邮箱中搜索邮件 但我不明白有什么标准可用
  • X509 证书公钥填充

    我正在将一些 Java 代码移植到 C 但 Java 和 C 之间的公钥填充似乎不一致 这是我的Java代码 package Encryption import java security cert X509Certificate impo
  • 语法的替代版本无法按照我的意愿工作

    这段代码解析 string如我所愿 usr bin env raku my string q to END aaa bbb this has trailing spaces which I want to keep kjkjsdf kjkd
  • SSL 异常:初始化 Alexa Skill Management API (SMAPI) 时“在握手期间收到 close_notify”

    我正在尝试使用 SMAPI 通过 Java 与我的 Alexa Skill 进行交互 以下代码失败 package io mirko impl import com amazon ask model services skillManage
  • 如何更改 Angular-Chart.js 的颜色

    我使用 Angular Chart js AngularJSChart js http www chartjs org 版本 来创建条形图 图表正在使用除颜色之外的选项 即使我设置了它们 它也会显示在文档中 http jtblin gith
  • Python if 语句无法正常工作

    我是一个非常新的 Python 用户 2 7 一直在努力学习 Python The Hard Way 课程 一直到第 37 章 并决定阅读一些其他学习材料 再次复习基础知识并在那里做练习 我一直在读这个 http anh cs luc ed
  • Asp.Net MVC 区域,我该如何使用它们?

    我有两个关于 Asp Net MVC 领域的问题 从我在各种播客中听到的内容来看 我对这些领域的了解只有肤浅的了解 但我认为我相当了解它们的用途 现在我的问题是我是否也可以使用它们来使我能够逐渐从使用 VB 的 Asp Net Webfor
  • 在 NumPy 数组中查找等于 0 的元素索引

    NumPy 具有高效的函数 方法nonzero http docs scipy org doc numpy reference generated numpy nonzero html识别非零元素的索引ndarray目的 获取元素索引的最有
  • 如何使用 WorkManager 安排通知?

    我想在每次用户在数据库中添加特定时间的注释时安排通知 虽然使用 AlarmManager BroadcastReceiver 等有多种方法可以做到这一点 但如何使用 WorkManager 来完成呢 WorkManager不适合需要在特定时
  • Bootstrap 3.0 和 Google 地图 javascript API V3 样式

    我正在尝试将谷歌地图 javascript API v3 实现到利用 Bootstrap 3 0 轮播 基本主题的 Bootstrap 3 0 网站中 问题是 div div 如果我尝试将其包含在任何其他 div 或 bootstrap 3
  • 如何使用 RTTI 区分 TDateTime 属性和 Double 属性?

    使用Delphi 2010中的RTTI系统 有什么方法可以找出属性是否是TDateTime 目前 每当我回调 asVariant 以及检查属性类型时 它都会将其视为双精度 这是因为它只能看到基本类型吗 TDateTime 双精度 尝试检查N