delphi - 使用默认值时,rtti 不调用所需的重载函数

标签 delphi delphi-xe5 rtti

我在 rtti 方法调用解析中遇到问题。 我的 rtti 解析代码是在以下 topic 中作为解决方案实现的代码 在这个答案中,作者使用参数长度作为决定性比较器来选择重载方法,但在我的例子中,我想使用使用一些默认值的重载方法,这些默认值在面对以下情况时将无法解决:

第一个模型(称为):用户

包含为公共(public):

         procedure OnMyFocusChanged(); overload;
         procedure OnMyFocusChanged(Caller : Integer ; id : Integer = -1); overload;

第二个模型:User_block.pas

有这一行:CTRL.Start('User','OnMyFocusChanged',[index]); CTRL 是一个 Controller ,包含一些 100% 有效的方法,它将调用提到的 topic 中实现的方法。 .

在以下情况下,要求 Rtti 解析 OnMyFocusChanged(index) 将不会得到解析。

有办法解决这个问题吗?

最佳答案

我认为 RTTI 不会公开默认参数值。

无论如何,最干净的解决方案是停止使用默认参数。添加采用单个参数的第三个重载。通过调用两个参数重载传递-1来实现。

关于delphi - 使用默认值时,rtti 不调用所需的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280244/

相关文章:

delphi - 随机文件名

德尔福: How to create a generic type programatically?

delphi - 如果在运行时创建,Firemonkey 组件样式将不起作用

delphi - 写入文本文件的中间

delphi - 如何使用 ANTLR 生成 Delphi 输出?

每次运行项目时,Delphi XE5 都会重新编译。即使没有进行任何更改也会发生这种情况

delphi - 如何在运行时清除 TGridPanelLayout

swift - 为什么 type(of : object) == ClassName. self 会返回错误的结果?

c++ - decltype 导致 is_same<T, T> 失败(相同类型)

delphi - 在公共(public)属性(property)上使用 GetPropInfo