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.

相关文章
|
7月前
|
C++
成员初始化表的执行顺序与顺写顺序无关
成员初始化表的执行顺序与顺写顺序无关
55 0
|
7月前
|
算法 安全 Java
【算法训练-栈 一】【结构特性】有效的括号、最小栈(包含Min函数的栈)
【算法训练-栈 一】【结构特性】有效的括号、最小栈(包含Min函数的栈)
74 0
|
7月前
|
C语言
LabVIEW局部变量和值属性节点之间的区别
LabVIEW局部变量和值属性节点之间的区别
132 0
|
存储 编译器 C语言
结构体类型的结构在内存的存储
结构体类型的结构在内存的存储
|
算法 搜索推荐 编译器
一组类型相同的数据【C 数组】总结
一组类型相同的数据【C 数组】总结
|
人工智能
实验报告 抽象数据类型的表示和实现 (三元组) 实现对三元组的基本操作 创建 取值 置换 打印/销毁三元组等功能 数据结构(C语言版)
实验报告 抽象数据类型的表示和实现 (三元组) 实现对三元组的基本操作 创建 取值 置换 打印/销毁三元组等功能 数据结构(C语言版)
439 0
实验报告 抽象数据类型的表示和实现 (三元组) 实现对三元组的基本操作 创建 取值 置换 打印/销毁三元组等功能 数据结构(C语言版)
|
Java
Java泛型——限制可用类型
Java泛型——限制可用类型
160 0
运算符优先顺序(包含类型说明)
运算符优先顺序(包含类型说明)
180 0
运算符优先顺序(包含类型说明)
数据结构之数据、数据元素、数据项、数据对象之间的关系
本文讲解数据结构之数据、数据元素、数据项、数据对象之间的关系
1147 0
数据结构之数据、数据元素、数据项、数据对象之间的关系
|
编译器 C++
C++把类的设计看成类型设计
C++把类的设计看成类型设计
112 0