Rtti 单元(4): 获取结构的信息

下面以 TPoint 为例, 用 TRttiRecordType 读取了结构的信息.

unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, StdCtrls; 
 
type 
 TForm1 = class(TForm) 
  Memo1: TMemo; 
  Button1: TButton; 
  procedure Button1Click(Sender: TObject); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm}  
 
uses Rtti; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 t: TRttiRecordType; 
 f: TRttiField; 
begin 
 Memo1.Clear; 
 t := TRttiContext.Create.GetType(TypeInfo(TPoint)).AsRecord; 
 Memo1.Lines.Add(t.QualifiedName); 
 Memo1.Lines.Add(Format('Size: %d', [t.TypeSize])); 
 Memo1.Lines.Add(EmptyStr); 
 
 Memo1.Lines.Add(Format('字段数: %d', [Length(t.GetFields)])); 
 Memo1.Lines.Add(Format('方法数: %d', [Length(t.GetMethods)])); 
 Memo1.Lines.Add(Format('属性数: %d', [Length(t.GetProperties)])); 
 Memo1.Lines.Add(EmptyStr); 
 
 Memo1.Lines.Add('全部字段:'); 
 for f in t.GetFields do Memo1.Lines.Add(f.ToString); 
end; 
 
end.

时间: 2024-08-01 16:53:02

Rtti 单元(4): 获取结构的信息的相关文章

Rtti单元(1)获取类的方法、属性、字段的列表

通过 Rtti 单元的 TRttiContext(是个 record), 可以方便地获取类的方法.属性.字段的列表. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TB

Rtti 单元(5): 获取方法的更多信息

方法的更多信息是指: 方法类型.返回值.参数等. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); end;

Rtti 单元(3): 获取有序类型的信息

任何数据类型中 Rtti 中都有对应的获取信息的类, 有序类型对应的是 TRttiOrdinalType. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button

获取MYSQL表信息

    6.8 其他主题    本节包括几个主题,这些主题不完全适合于本章从client1到client5 的开发中的任一小节的内容:    ■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果.    ■ 如何处理很难插入到查询中的数据.    ■ 如何处理图形数据.    ■ 如何获得表结构的信息.    ■ 常见的MySQL程序设计错误及如何避免.    6.8.1在结果集上执行计算    迄今为止,我们集中而主要地使用了结果集元数据来打印行数据,但很明显,除打印之

guid-windows GUID SetupDiGerClassDevs(...)获取USB设备信息失败

问题描述 windows GUID SetupDiGerClassDevs(...)获取USB设备信息失败 下面这段代码是为了获取本机USB设备驱动handle的,可是逐句运行的时候, SetupDiGerClassDevs返回值老是 INVALID_HANDLE_VALUE. #pragma comment(lib,"setupapi") //ERROR linkerror 1120 #include<Windows.h> #include<SetupAPI.h&g

linux系统获取硬盘使用信息_Linux

1.df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况.df命令经常用的参数为: a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使用量 k:大小用k来表示 (默认值) t:显示某一个档案系统的所有分割区磁盘使用量 x:显示不是某一个档案系统的所有分割区磁盘使用量 T:显示每个分割区所属的档案系统名称 常用命令:df -hi 举例截图如下所示 2.du命令 du命令用来查询档案或目录的磁盘使用空间,通过man获取du命令的详细介

Android通过aapt命令获取apk详细信息(包括:文件包名,版本号,SDK等信息)

公司运维问我怎么在windows上安装模拟器,我你说你安装模拟器干什么?他说,我安装模拟器查看app的包名这些信息做统计. 我顿时想,有必要这样折腾么? 我然后就给他装了Android SDK通过build-tools下面的aapt.exe文件执行命令即可得到所有apk信息. aapt命令 aapt l[ist] [-v] [-a] file.{zip,jar,apk} List contents of Zip-compatible archive. aapt d[ump] [--values]

ios-IOS的SQLite查询数据,如果没有对应数据的话,应该怎么获取到这个信息

问题描述 IOS的SQLite查询数据,如果没有对应数据的话,应该怎么获取到这个信息 RT,求解. 我是用本地的数据库,数据都是已经固定了的,根据编号显示数据,如果数据中没有编号,我想设置弹出一个提示,但是我不知道怎么获取查不到数据的这个信息 解决方案 select count(*) from table where 条件 返回0表示没有数据

通过runtime获取对象相关信息

通过runtime获取对象相关信息 在这里,本人给大家提供一个runtime关于NSObject的扩展,用来显示各种NSObject中的信息,这有助于你来分析类的组成:) 先准备以下类供测试: Model.h 与 Model.m // // Model.h // Runtime // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <Foundation/Foundation.h> typedef enum : NSUIn