使用 RTTI 从类中获取常量字段

2024-04-15

我可以枚举类中的常量吗?

我努力了

MyClass = class
const
  c1 = 'c1';
  c2 = 'c2';
  c3 = 'c3';
end;

procedure GetConst();
var
  ctx: TRttiContext;
  objType: TRttiType;
  field: trttifield;
  s: string;
begin
  ctx := TRttiContext.Create;
  objType := ctx.GetType(MyClass.ClassInfo);
  for field in objType.GetDeclaredFields do
    s:= field.Name;
end;

我想要c1,c2,c2。

这可能吗?

编辑: 我想要做的是为一些外部符号定义一些键(对于 cad 程序)

symbol1=class
    const
    datafield1='datafield1';
    datafield2='datafield2';
end;
symbol2=class
    const
    datafield21='datafield21abc';
    datafield22='datafield22abc';
end

我不喜欢为此使用字段,因为我不喜欢将声明和初始化分开。 我无法使用枚举,因为我无法将值定义为字符串。


您无法通过 RTTI 获取这些常量。我怀疑你最好的解决方案是使用属性。这不仅对实际工作有好处,而且我认为这听起来像是解决您问题的更干净、更简单的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RTTI 从类中获取常量字段 的相关文章

  • Delphi - 将物理路径(设备文件句柄)转换为虚拟路径

    我怎样才能转换像这样的路径 设备 HarddiskVolume3 Windows 进入其相应的虚拟路径 如本例中的 c Windows 我个人更喜欢原生方式 function GetHDDDevicesWithDOSPath TString
  • Delphi XE 中的数据绑定向导 - 可以将其配置为映射到 MSXML 接口吗?

    Delphi XE 中的数据绑定向导生成继承自 Delphi 自己的 DOM ADOM XML v4 实现的类和接口 它似乎不支持针对模式进行验证 解析时验证 选项仅适用于 MSXML 供应商type 从 VCL 源代码以及 IDE 中 X
  • Delphi XE2 Firemonkey 示例应用程序未在 MAC 上运行

    我正在尝试在 Mac 上运行示例 Firemonkey 应用程序 但我在 Mac 中收到以下消息 dyld Library not loaded rpath libcgunwind 1 0 dylib Referenced from Use
  • 以 png 格式剪辑幻灯片 (Delphi 2010)

    I have a filmstrip of images in png format like this 我想知道如何剪辑每个图像并将这些图像放入 TImageList 控件中 并始终保留透明度 EDIT 是的 在设计时 RRUZ 提到的技
  • Delphi中的抽象类

    我正在使用一个具有许多抽象类的组件套件 现在我想应用多态性 但在创建对象时收到错误抽象类 即使我不需要 我是否应该重写所有虚拟方法 有什么解决方法或解决方案吗 为了创建类的实例 您需要重写所有声明为虚拟抽象的方法 即使您不使用它们 如果您确
  • 在 Delphi 2007 中将具有透明度的位图保存为 PNG

    我有一个包含透明度信息的 Delphi 位图 32 位 我需要将其转换并保存为 PNG 文件 同时保留透明度 我目前拥有的工具是graphics32 Library GR32 PNG 由Christian Budde 提供 和PNGImag
  • 如何向标准集合编辑器添加图标?

    我有一个自定义控件 它利用TCollection and TCollectionItem 在集合编辑器中 我想向每个列表项添加图标 该列表项由内部TImageList 在其父组件内 集合项本身代表图标 我想在这个编辑器中显示相应的图标 如何
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 使用项目中的波形文件

    我目前只能通过将波形文件放在已编译的 exe 旁边来播放背景声音 但我实际上想要一个包含波形文件的静态可执行文件 这在Delphi XE2中可能吗 这是我的代码 SndPlaySound Raw wav SND ASYNC or SND L
  • Delphi 流畅的界面

    使用上有什么优点和缺点流畅的界面 http en wikipedia org wiki Fluent interface在德尔福 流畅的界面应该会增加可读性 但我对此有点怀疑one包含很多链式方法的长 LOC 是否存在编译器问题 是否存在任
  • 对象的引用计数

    在我的代码中 我使用一个小的数据存储类 它是在不同的地方创建的 为了避免内存泄漏并简化事情 我想使用引用计数 所以我这样做了 type TFileInfo class TInterfacedObject IInterface 并删除了我对
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E
  • Delphi - 如果没有创建类,为什么这个函数可以工作?

    考虑这个类 unit Unit2 interface type TTeste class private texto string public function soma a b integer string end implementa
  • H2161 重复资源[一个VCL项目可以有2个类名相同但命名空间不同的表单吗?]

    我尝试在 2 个不同的命名空间中创建具有相同类名的 2 个表单 FirstNameSpace ExampleFormName TExampleFormName SecondNameSpace ExampleFormName TExample
  • 如何在拥有句柄时检查给定进程是否正在运行

    我在用ShellExecuteEx启动应用程序 成功开始阅读后TShellExecuteInfo hProcess获取已启动进程的句柄 我想定期检查我的应用程序启动的进程是否仍在运行 两个或多个同名进程可以同时运行 我想确保我的应用程序正在
  • 如果加载 dll 找不到依赖项,有什么方法可以捕获错误吗?

    我正在编写一个 Windows 32 位程序 可以使用多个可能的 dll 之一 所以它尝试依次加载每个 dll 使用SysUtils SafeLoadLibrary如果加载成功 它就会使用该 dll 不幸的是 其中一些 dll 静态链接到其
  • 如何在按键时识别 unicode 键?

    我的应用程序使用 unicode 字符 并且我有几个文本字段 我想限制用户输入特殊字符 例如 begin if not Key in a z A Z 0 9 13 8 then Key 0 if Key 13 then bOk Click
  • Delphi Prism 中 TStringList 的替代品。

    我正在将用 Delphi 2007 Net 编写的应用程序迁移到 Delphi Prism 哪个是替换 TStringList 和 TStrings 类的最佳选择 提前致谢 Bye 只需使用 NET 框架中内置的 List 类型 或者字符串

随机推荐

  • 设置今日扩展小工具的通知

    我正在创建一个简单的计时器应用程序 它将重点关注今天的扩展小部件功能 用户可以通过点击从此处启动计时器 唯一的问题是我需要从小部件设置本地通知 我尝试使用 UIApplicaton sharedApplication ScheduleLoc
  • 按组填写缺失日期

    我有一个数据集 如下所示 shop id item id time value 150 1 2015 07 10 3 150 1 2015 07 11 5 150 1 2015 07 13 2 150 2 2015 07 10 15 150
  • 使用 JUnit 中的 Blobstore

    我正在尝试测试一些使用 Blobstore API 的代码 但我并不真正了解如何将一些文件放入 Blobstore 中 以下内容不起作用 private BlobKey createBlob String path throws Excep
  • 如何使用 HttpClient 解决 .Net4.0 与 .Net4.5 中 Uri 和编码 URL 的差异

    Uri Net4 0 与 Net4 5 中的行为不同 var u new Uri http localhost 5984 mycouchtests pri test 2F1 Console WriteLine u OriginalStrin
  • Postgres 动态创建序列

    我正在编写一个应用程序 其中有多个用户 用户可以在应用程序内上传报告 目前 我有一个 报告 表 其中包含所有提交的报告 其中有一个 id 字段 该字段是表上的序列主键 我指定的要求是 用户需要能够指定其报告开始计数的前缀和数字 例如 用户应
  • 每页记录数允许用户选择 - codeigniter 分页

    我有有效的分页功能 我已将限制设置为每页 5 条记录 但我希望用户能够根据需要进行更改 问题是我不知道该怎么做 在视图中 我创建了下拉菜单 因此用户可以选择他想要每页查看多少条记录 ul class dropdown menu li a h
  • android 权限 - CHANGE_COMPONENT_ENABLED_STATE

    我需要在我的代码中使用 android permission CHANGE COMPONENT ENABLED STATE 权限 因为我需要更新我的项目的另一个 apk 的组件 但它似乎并不真正适合我 这是我的代码
  • 在带有或不带有命名空间的 中使用类型

    在 C 11 中 我可以选择是否要使用带或不带命名空间 std 中定义的类型 至少我的编译器 g 4 7 接受这两种变体 我的问题是 使用 cstdint 中的 typedef 的推荐方法是什么 有或没有命名空间 有什么优点或缺点 或者这只
  • 如何获取两个 JavaScript 对象图之间的差异列表?

    我希望能够获得两个 JavaScript 对象图之间所有差异的列表 以及发生增量的属性名称和值 就其价值而言 这些对象通常以 JSON 形式从服务器检索 并且通常不超过几层 即 它可能是本身具有数据的对象数组 然后是包含其他数据对象的数组
  • git - 当输出重定向到文件时,git show 在二进制文件上使用是否安全?

    我读到可以从 Git 中的特定修订版检索单个文件 如这个问题中的回答 如何从 Git 中的特定修订版检索单个文件 https stackoverflow com questions 610208 how to retrieve a sing
  • 我可以通过编程方式选择我的线程应在多核 CPU 的哪个核心上运行吗?

    还是由操作系统控制 我听说 Google 的新 Go 语言具有内置功能 可供程序员进行精细操作 还是我理解错了 对于 Linux 操作系统 sched setaffinity是你的答案 从 Linux 内核 2 5 8 开始支持它 Name
  • Alamofire 图像:在 af_setImageWithURL() 之后从 AutoPurgingImageCache 中获取图像

    我在我的项目中使用 AlamofireImage 我用someImageView af setImageWithURL url a lot 然而 在某些时候我需要从 imageCache 手动获取图像 因为我不想将其应用到 UIImageV
  • 如何将逻辑回归模型获得的系数映射到pyspark中的特征名称

    我使用 databricks 列出的管道流构建了一个逻辑回归模型 https docs databricks com spark latest mllib binary classification mllib pipelines html
  • 使用 Plotly 渲染 MATLAB 面片 Fig2plotly()

    问题 当尝试导出使用patchMATLAB 中的命令为fig2plotly 最终输出缺少指定的面部颜色 也许演示会有所帮助 采用以下顶点和面来定义立方体 摘自 MATLAB 文档 vert 0 0 0 1 0 0 1 1 0 0 1 0 0
  • C++中如何检查数据类型?

    我对 C 相当陌生 我主要使用 python 我正在尝试检查存储在我正在处理的对象中的值的变量类型 我记得Python中有一个命令isinstance我可以使用它作为运行某些命令的条件 例如如果下一个值是字符串 则执行 A 如果是 int
  • Gradle 没有选择 Cucumber-jvm

    我正在尝试从 Gradle 运行 Cucumber jvm 但是 无论我做什么 我都无法让这些功能实际运行 当其他 JUnit 测试运行时 它们总是被跳过 我的特点在src test resources我有一个 JUnit 测试src te
  • Windows Phone 8 的内存使用限制

    Windows Phone 8 应用程序的应用程序内存使用限制是多少 我需要三种不同可用设备的内存限制 如 720p WXVGA 等 WP8 内存上限的 zen 具有三个方面 默认基线 150MB 扩展内存 180MB 和低内存设备选择退出
  • 空值并不唯一

    我在 postgres 上有这样的行 name address college john rome john rome max tokyo 我创建一个这样的表 create test name varchar 10 address varc
  • 如何将 Chrome 扩展挂钩到网络浏览器流量

    我正在尝试编写一个 chrome 扩展来拦截网络流量并修改数据 如果有人能准确地告诉我应该使用哪个 API 以及在哪里可以找到文档 我将不胜感激 利用网络请求 https developer chrome com extensions we
  • 使用 RTTI 从类中获取常量字段

    我可以枚举类中的常量吗 我努力了 MyClass class const c1 c1 c2 c2 c3 c3 end procedure GetConst var ctx TRttiContext objType TRttiType fie