文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 239
阅读 3
收藏 0

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

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.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/10/16/1584401.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
减小Delphi XE 以上版 编译出来的程序体积

减小Delphi XE 以上版 编译出来的程序体积 . 默认Delphi XE, XE2, XE3,XE4,XE5, XE6 ... 编译出来的程序体积很大。 一般用两个方法可以很大程度上减少程序体积。 一、在工程中用编译指令禁用...

vga
2014/08/02
0
2
FastReport产品介绍及免费下载地址

公司地址: 俄罗斯 公司网址: http://www.fast-report.com 详细信息: 由技术总监Alexander Tzyganenko创建于1998年,Fast Reports, Inc.开发了快速报表软件:应用程序、库和插件。 FastRe...

yidongkaifa
2014/10/13
0
0
Delphi调用 C# 写的webservice

Delphi调用 C# webservice总结 用delphi的THTTPRIO控件调用了c#写的webservice。 下面是我调试时遇到的一些问题: 1:导入wsdl文件:file--new----other----webservice---WSDLimporter---输入...

vga
2014/11/25
0
0
BCB中的RTTI机制

BCB中的RTTI机制 RTTI在BCB中其实有两个意义。首先,针对一般标准的C++中所定义的,RTTI是所谓的Run-Time Type Identification的缩写。传统的程序语言中,所谓的数据型态仅在Compile-Time有所...

狂斩一条龙
2011/04/10
0
0
Office2010开放下载 官方提供免费密钥

作者:刘菲菲 ZOL软件事业部消息:11月19日凌晨,微软终于全面放出了Office 2010 Beta版的下载,此番提供的Office Professional Plus 2010(专业增强版),包括Word、Excel、PowerPoint、OneNo...

merlin
2009/11/19
49.9K
5

没有更多内容

加载失败,请刷新页面

加载更多

centos7安装RabbitMQ详细过程

由于RabbitMQ是基于Erlang语言开发,所以在安装RabbitMQ之前,需要先安装Erlang 1、环境: centos 7.1 内核版本3.10.0-229.el7.x86_64 Erlang 19.0.4版本 RabbitMQ 3.6.14版本 2、在线安装E...

秋至丶枫以落
19分钟前
1
0
6个使用KeePassX保护密码的技巧

虽然安全是个深奥的主题,但是你可以遵循几个简单的日常习惯来减小攻击面。本文将解释确保密码信息安全的重要性,并给出如何充分利用KeePassX的建议。 日益互联的数字世界使安全成为一个重要...

Linux就该这么学
21分钟前
1
0
2018最佳GAN论文回顾(下)

继上一篇《2018最佳GAN论文回顾(上)》,我又继续介绍了一个对于GAN的基于样式的生成器体系结构的新论文,提出了一个新的模型来应对这种挑战。 一种用于生成式对抗网络的基于生成器体系结构...

阿里云官方博客
23分钟前
0
0
UnsatisfiedLinkError sawindbg.dll

方法:搜索sawindbg.dll,然后将文件报错的目录下

洛水
59分钟前
5
0
说说不知道的Golang中参数传递

本文由云+社区发表 导言 几乎每一个C++开发人员,都被面试过有关于函数参数是值传递还是引用传递的问题,其实不止于C++,任何一个语言中,我们都需要关心函数在参数传递时的行为。在golang中...

腾讯云加社区
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部