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

转载 2011年01月09日 20:13:00

方法的更多信息是指: 方法类型、返回值、参数等.

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,TypInfo; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 ms: TArray<TRttiMethod>; 
 m: TRttiMethod; 
 mps: TArray<TRttiParameter>; 
 mp: TRttiParameter; 
begin 
 Memo1.Clear; 
 
 {先获取方法集合, 这里随便使用了 TButton 类} 
 ms := TRttiContext.Create.GetType(TButton).GetMethods; 
 for m in ms do 
 begin 
  {方法名称} 
  Memo1.Lines.Add('方法名称: ' + m.Name); 
 
  {方法类型: proceedure、function 等} 
  Memo1.Lines.Add('方法类型: ' + GetEnumName(TypeInfo(TMethodKind), Ord(m.MethodKind))); 
 
  {方法的返回值类型} 
  if Assigned(m.ReturnType) then 
   Memo1.Lines.Add('返回值: ' + GetEnumName(TypeInfo(TTypeKind), Ord(m.ReturnType.TypeKind))); 
 
  {方法的参数列表} 
  mps := m.GetParameters; 
  if Length(mps) > 0 then 
  begin 
   Memo1.Lines.Add('参数:'); 
   for mp in mps do Memo1.Lines.Add(mp.ToString); 
   //还可以通过 mp.ParamType 获取参数的数据类型 
   //还可以通过 mp.Flags 获取参数的修饰符(譬如 var、const 等) 
  end; 
 
  Memo1.Lines.Add(EmptyStr); 
 end; 
end; 
 
end.

相关文章推荐

Delphi 2010 新增功能之: Rtti 单元(5): 获取方法的更多信息

====================================================== 注:本文源代码点此下载 =============================...

对OkHttpUtils中onError方法进行扩展打印更多信息

OkHttpUtils的onError方法中只能打印响应码,这篇文章将onError方法进行扩展使其能打印更多信息。...

Radiomics:使用先进的特征分析方法从医学影像中提取更多信息

Radiomics:使用先进的特征分析方法从医学影像中提取更多信息关键字图像 Radiomics 肿瘤 内部肿瘤 异质性摘要实体肿瘤具有空间上和时间上的异质性。这就限制了基于分子检测的侵入性活检的使用...

Delphi通过 RTTI信息重构类方法的原始声明

(一)运行时获得类方法的原始声明 当我们在窗体上放置一个控件,在Object Inspector的Events中双击该控件的某个方法时,IDE会自动产生该控件相应的方法声明,形如: proce...

CAS登录后获取更多信息

CAS登录后获取更多信息cas-server-3.5.2 cas-server-4.0.0两个版本的配置文件差别还是很大的,本文仅做个笔记用。无详细描述。...

使用 Diagwait 作为诊断工具,获取用于诊断 Oracle Clusterware 节点驱逐的更多信息 (文档 ID 1525761.1)

使用 Diagwait 作为诊断工具,获取用于诊断 Oracle Clusterware 节点驱逐的更多信息 (文档 ID 1525761.1) 转到底部 ...

C++ 类型信息获取 RTTI traits nest 大杂烩

分类 按照作用时期 编译时期 运行时期 模板(偏)特化 虚函数 nest 技术 typeid traits 技术 dynamic_cast decltype按照支...

RTTI:获取类的详细信息

通过RTTI,Class类和Reflection可以获取某个类的详细信息,包括其没有Public出来的信息,先看一个实例: public class ClassExtractor { /**...

每日程炼-delphi2010 Rtti获取某一个类的信息

delphi2010新增的Rtti单元可以轻松的获取某一个指定的类的信息。Demo下载Rtti 单元(1)程序代码:程序代码: unit Unit1; interface uses Windo...
  • GODYAD
  • GODYAD
  • 2011年05月16日 01:43
  • 2003

笨方法学Python 习题 5: 更多的变量和打印

#!usr/bin/python # -*- coding:utf8 -*- my_name = "Zed A. Shaw" my_age= 35 #not a lie my_height = 7...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Rtti 单元(5): 获取方法的更多信息
举报原因:
原因补充:

(最多只允许输入30个字)