运用delphiXE RTTI在运行时动态获取信息及获取某个TComponent类或TObject类的RttiType信息的案例

本文介绍如何使用DelphiXER的RTTI在运行时动态获取类信息,包括TComponent和TObject类的详细元数据,如方法、属性和字段。通过案例演示,展示如何在VCL和Fmx中跨平台使用RTTI,提高代码的灵活性和可维护性。

运用delphiXE RTTI在运行时动态获取信息及获取某个TComponent类或TObject类的RttiType信息的案例

 

一、理解RTTI

先看看官方文档:http://docwiki.embarcadero.com/RADStudio/Rio/en/Working_with_RTTI   译文如下:

        运行时类型信息(RTTI)是一种编程模式,其中可以在运行时获取有关类型的信息。如果启用了RTTI生成,则生成的二进制文件将包含特殊的元数据,该元数据包含有关类型的信息(例如,类的祖先class ancestry,声明的字段declared fields,带注释的属性annotated attributes【我加的:包含类的字段、属性、函数、过程,包括已发布的,公共的,受保护的,私有的】)。使用System.Rtti单元中提供的功能,您可以在运行时获取这些信息。最终结果是能够创建抽象和通用的框架,在其中可以操作任何公开的RTTI类型。

注意:RTTI是Delphi开发工具的特有的 。

注意:不会为泛型方法生成运行时类型信息。

我加的:Delphi将RTTI信息根植到编译后链接的包信息(链接产生的二进制文件,它被链接到.exe可执行文件中( Windows)、.jar( Android)、.静态文件.a.h( IOS))表中System.PackageInfoTable,运行时是去读取该表。注意:在iOS平台上,链接是静态完成的,因此不会植根RTTI。但是,如果使用GetType方法,则可以获取RTTI

RTTI生成的控制

使用以下编译器指令来控制运行时类型信息的生成。您可能需要限制RTTI的生成以减小可执行文件的大小。

Delphi C ++
{$ M},{$ TYPEINFO} __declspec(delphirtti)
{$ METHODINFO} 不适用
{$ RTTI} #pragmaexplicit_rtti
{$ WEAKLINKRTTI} 不适用

话题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专讲冷知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值