我需要得到任何

TRttiType的单位(命名空间)的名称.

到目前为止,我已尝试过以下内容.

1)使用PTypeData.UnitName,此解决方案有效,但仅当TTypeKind为tkClass时.

procedure ListAllUnits;

var

ctx : TRttiContext;

lType: TRttiType;

Units: TStrings;

begin

Units:=TStringList.Create;

try

ctx := TRttiContext.Create;

for lType in ctx.GetTypes do

if lType.IsInstance then //only works for classes

if Units.IndexOf(UTF8ToString(GetTypeData(lType.Handle).UnitName))<0 then

Units.Add(UTF8ToString(GetTypeData(lType.Handle).UnitName));

Writeln(Units.Text);

finally

Units.Free;

end;

end;

2)解析QualifiedName属性,这个解决方案到目前为止工作正常,但我对此并不满意.

procedure ListAllUnits2;

function GetUnitName(lType: TRttiType): string;

begin

Result := StringReplace(lType.QualifiedName,'.' + lType.Name,'',[rfReplaceAll])

end;

var

ctx: TRttiContext;

lType: TRttiType;

Units: TStrings;

begin

Units := TStringList.Create;

try

ctx := TRttiContext.Create;

for lType in ctx.GetTypes do

if Units.IndexOf(GetUnitName(lType)) < 0 then

Units.Add(GetUnitName(lType));

Writeln(Units.Text);

finally

Units.Free;

end;

end;

问题是,存在另一种可靠的方法来获取任何TRttiType的单位名称?

gettype获取类名_delphi – 获取属于任何类型的单元名称(TRttiType)相关推荐

  1. 通过 TokenType(){}.getType()获取Persionlt;Tgt; 泛型T的类型和数值

    Gson通过借助TypeToken获取泛型参数的类型的方法(转) 最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持, ...

  2. java—使用反射对类进行操作(Class对象获取类名,包名,父类,接口,构造方法,普通方法,属性)

    (一)Class对象获取类名,包名,父类,接口 前提条件: 有两个接口IMessage,SystemEdition 一个父类Father 一个子类Son继承父类,实现两个接口IMessage,Syst ...

  3. python 获取类名

    print(i,module.__class__.__name__,x.size()) 方法内部获取方法名: sys._getframe().f_code.co_name 1 类内部获取类名 self ...

  4. 【java】java获取对象属性类型、属性名称、属性值

    java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...

  5. c# 通过反射获取类的属性和属性类型

    /// <summary> /// 获取类的字段和字段类型 /// </summary> /// <returns></returns> public ...

  6. C# API之常用操作窗口类函数详解[查找所有窗口、获取目标句柄的类名、获取窗口文本、获取当前活动窗口、通过窗口句柄获取线程ID、获取指定窗口位置]

    /// <summary>/// 查找所有窗口(只要是在进程里面的)/// 如果不限制类名或者标题使用null代替/// </summary>/// <param nam ...

  7. java 不知道类名_Java 中获取类名的三种方法,你知道几种?

    之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里 ...

  8. 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 )

    文章目录 一.获取对象类型分析 二.替换 Application 时机 一.获取对象类型分析 在 [Android 安全]DEX 加密 ( Application 替换 | 获取 ContextImp ...

  9. 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 | 源码分析 )

    文章目录 一.获取对象类型分析 二.获取 ContextImpl 类型对象 三.获取 ActivityThread.LoadedApk 类型对象 dex 解密时 , 需要将 代理 Applicatio ...

最新文章

  1. Spring Boot 2.x整合Apollo代码示例
  2. 蒙克:云计算安全问题被夸大
  3. android全局计时_Android定时器AlarmManager
  4. Double binary trees
  5. javascript事件委托和jQuery事件绑定on、off 和one以及on绑定多个事件(重要)
  6. radio后台数据回显
  7. 蘑菇战争2显示没有连接服务器,蘑菇战争2新手怎么玩?四步带你解决新手难关[多图]...
  8. 解决windows server2012 评估版本过期,系统自动关机 重启
  9. Ubuntu内网穿透
  10. Android图片压缩——Luban鲁班压缩
  11. 撰写合格的REST API
  12. 被巨头、快递、新贵分食的跨境电商
  13. node-v14.21版本的下载安装
  14. 使用素描图像识别人脸
  15. TypeError: xxx() missing 1 required positional argument xxx
  16. 禁止vite打包时将rgba转为16进制
  17. 3. LaTeX图片的排版、引用与格式
  18. SVN服务端使用教程
  19. 蚂蚁啃大象之zookeeper学习过程
  20. 这70道算法题你都会的话,可以直接去字节跳动了!

热门文章

  1. smarty模板概念及应用场合
  2. 不再迷惑,无值和 NULL 值
  3. linux双系统重装win7系统下载,Windows与Ubuntu双系统重装WIN7后修复Grub2
  4. 华为交换机ipv6默认路由配置_静态路由和默认路由的配置
  5. 127.0.0.1 php,关于php -fpm 出现127.0.0.1:9000已经被占用
  6. python接口自动化测试框架unittest代码_Python+unittest+requests 接口自动化测试框架搭建教程...
  7. mysql 5.6开启binlog_docker快速入门02——在docker下开启mysql5.6 binlog日志
  8. python累积和_python – 如何维持累积总和?
  9. iview select 怎么清空_在使用iview时发现要先重置一下表单然后填写完后再重置可以清空Select多选框,否则清不掉,什么原因?...
  10. lenze变频器怎么更改地址_S7-200 SMART PLC Modbus通信控制 V20变频器