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

简介: 任何数据类型中 Rtti 中都有对应的获取信息的类, 有序类型对应的是 TRttiOrdinalType.unit Unit1;  interface  uses  Windows, Messages, SysUtils, Variants, Cl...

任何数据类型中 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 Button1Click(Sender: TObject); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm}  
 
uses Rtti; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 t: TRttiOrdinalType; 
begin 
 Memo1.Clear; 
 
 //先从类型名获取类型信息对象 
 t := TRttiContext.Create.GetType(TypeInfo(Byte)) as TRttiOrdinalType; 
 Memo1.Lines.Add(Format('%s - %s', [t.Name, t.QualifiedName])); 
 Memo1.Lines.Add(Format('Size: %d', [t.TypeSize])); 
 Memo1.Lines.Add('QualifiedName: ' + t.QualifiedName); 
 Memo1.Lines.Add(Format('Min,Max: %d , %d', [t.MinValue, t.MaxValue])); 
 Memo1.Lines.Add(EmptyStr); //空字串 
 
 //可以用 AsOrdinal 方法代替前面的 as TRttiOrdinalType 
 t := TRttiContext.Create.GetType(TypeInfo(Word)).AsOrdinal; 
 Memo1.Lines.Add(Format('%s: %s', [t.Name, t.QualifiedName])); 
 Memo1.Lines.Add(Format('Size: %d', [t.TypeSize])); 
 Memo1.Lines.Add(Format('Min,Max: %d , %d', [t.MinValue, t.MaxValue])); 
 Memo1.Lines.Add(EmptyStr); 
 
 //也可以直接强制转换 
 t := TRttiOrdinalType(TRttiContext.Create.GetType(TypeInfo(Integer))); 
 Memo1.Lines.Add(Format('%s: %s', [t.Name, t.QualifiedName])); 
 Memo1.Lines.Add(Format('Size: %d', [t.TypeSize])); 
 Memo1.Lines.Add(Format('Min,Max: %d , %d', [t.MinValue, t.MaxValue])); 
 Memo1.Lines.Add(EmptyStr); 
end; 
 
end.

相关文章
|
4月前
|
C++
成员初始化表的执行顺序与顺写顺序无关
成员初始化表的执行顺序与顺写顺序无关
45 0
|
4月前
|
C语言
LabVIEW局部变量和值属性节点之间的区别
LabVIEW局部变量和值属性节点之间的区别
81 0
|
11月前
|
存储 编译器 C语言
结构体类型的结构在内存的存储
结构体类型的结构在内存的存储
|
安全
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
160 0
|
算法 搜索推荐 编译器
一组类型相同的数据【C 数组】总结
一组类型相同的数据【C 数组】总结
C/C++语言交换两个变量的七种方法
C/C++语言交换两个变量的七种方法
491 0
C/C++语言交换两个变量的七种方法
|
存储 前端开发 rax
【CSAPP】x86-64的中央处理单元16个存储64位值的通用目的寄存器
【CSAPP】x86-64的中央处理单元16个存储64位值的通用目的寄存器
146 0
【CSAPP】x86-64的中央处理单元16个存储64位值的通用目的寄存器
|
前端开发 JavaScript
4、原始数据与引用数据内存的区别
4、原始数据与引用数据内存的区别
89 0
4、原始数据与引用数据内存的区别
|
C# 开发者 Windows
【5分钟系列】计算机系统结构的定义
【5分钟系列】计算机系统结构的定义
262 0
【5分钟系列】计算机系统结构的定义
运算符优先顺序(包含类型说明)
运算符优先顺序(包含类型说明)
166 0
运算符优先顺序(包含类型说明)