首页 > 其他分享 >rtti取方法类型和返回值和参数

rtti取方法类型和返回值和参数

时间:2023-05-23 15:45:10浏览次数:48  
标签:end Lines Add 参数 mp 返回值 rtti 方法 Memo1

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


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.

标签:end,Lines,Add,参数,mp,返回值,rtti,方法,Memo1
From: https://www.cnblogs.com/lucken2000/p/17425418.html

相关文章

  • asm磁盘操作踢盘加盘参数
    问题背景:业务需求涉及到asm磁盘加盘踢盘比较频繁,记录一次较为全面的问题处理。处理方案:正常流程查看磁盘状态,selectHEADER_STATUS,GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,Namename2,OS_MB,PATHfromv$asm_disk;相关资料:MEMBER 属于当前diskgroup的diskFORMER 这个disk以前属......
  • 【linux进阶】shell之数组字典参数处理详解
    在Shell脚本中,使用数组和字典(关联数组)可以方便地处理参数。以下是它们的介绍:数组Shell中的数组类似于其他编程语言中的数组,它是一个用于存储多个值的变量。在Bash和其他类Unixshell中,可以使用以下语法来创建和操作数组:1.定义数组定义数组需要使用array_name=(value1......
  • goframe API 自定义接口返回值处理
    前言goframe默认使用了中间键ghttp.MiddlewareHandlerResponse,HTTPServer的数据返回通过ghttp.Response对象实现,ghttp.Response对象实现了标准库的http.ResponseWriter接口。数据输出使用Write*相关方法实现,并且数据输出采用了Buffer机制,因此数据的处理效率比较高......
  • R语言门限误差修正模型(TVECM)参数估计沪深300指数和股指期货指数可视化
    全文链接:http://tecdat.cn/?p=32511原文出处:拓端数据部落公众号时间序列模型的理论已经非常丰富,模型的应用也相当广泛。但现实生活中,越来越多的时间序列模型呈现出了非线性的特点,因此,研究非线性时间序列模型的理论及对其参数进行估计有着极其重要的意义。门限模型作为非线性......
  • fastcopy 参数 命令 大全
    FastCopy.exe[/cmd=命令][/file_src="源文件路径"][/file_dst="目标文件路径"][/srcdir="源目录"][/dstdir="目标目录"][选项...]/cmd-指定命令。(force_copy,move,sync,delete,verify,search,load_job,save_job)/file_src-指定源文件路径。(在force......
  • MT6833(天玑 700)处理器参数_芯片规格_性能_功能
    MT6833,又称为天玑700,是一款高性能芯片。它采用了八核CPU,其中包括两颗主频高达2.2GHz的ArmCortex-A76核心,可以让用户享受到更流畅的使用体验。此外,它还配备了高性能LPDDR4X内存和UFS2.2存储,可以带给用户更快的数据传输速度,使用户在玩游戏、看视频、拍照片、即时聊天或者在线......
  • javax.validation.constraints 参数校验
    很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,在代码中相当冗长,充满了if-else这种校验代码,今天我们就来学习spring的javax.validation注解式参数校验. 为什么要用validatorjavax.validation的一系列注解可以帮我们完成参数校验......
  • ASEMI代理长电可控硅PCR406参数,PCR406封装
    编辑-Z长电可控硅PCR406参数:型号:PCR406VDRM:400VIT(RMS):0.6A结点温度Tj:-40~+125℃储存温度:Tstg:-40~+150℃通态电压VTM:1.7V栅极触发电压VGT:0.8V断态重复峰值电压:400V保持电流IH:5mA栅极触发电流IGT:40µA  PCR406封装规格:封装:SOT-23总长度:3.0mm本体宽度:1.4mm加引......
  • Java调用采集拼多多根据ID获取商品详情API接口返回值说明示例,获取电商平台商品详情数
    ​     拼多多是一家基于C2B拼团营销方式主营团购的电商平台,其盈利模式由利润源、利润点、利润杠杆、利润通道和利润屏障五个要素组成的。通过锁定目标客户、关注客户价值、举办相关活动、不断拓展收入来源等经营策略,拼多多在较短的时间内得以快速成长。然而这种模式也......
  • 若依框架当参数为Map集合时数据权限的设置
    1、controller接口参数类型@PreAuthorize("@ss.hasPermi('manual:staff:list')")@GetMapping("/list")publicTableDataInfolist(@RequestParamMap<String,Object>map){map.put("params",newParmStaffCostManu......