rtti 在使用默认值时不调用想要的重载函数
rtti dont call the wanted overloaded function when default values are used
我在 rtti 方法调用解析中遇到问题。
我的 rtti 解析代码是以下 topic 中作为解决方案实现的代码
在这个答案中,作者使用参数长度作为 select 重载方法的决定性比较器,但在我的情况下,我想使用使用一些默认值的重载方法,这些默认值在遇到以下问题时不会被解析:
第一个模型(调用):用户
包含 public :
procedure OnMyFocusChanged(); overload;
procedure OnMyFocusChanged(Caller : Integer ; id : Integer = -1); overload;
第二个模型:User_block.pas
有这一行:CTRL.Start('User','OnMyFocusChanged',[index]);
CTRL 是一个控制器,包含一些 100% 有效的方法,它将调用上述 topic.
中实现的方法
以下情况要求Rtti解析OnMyFocusChanged(index)
不会被解析
有办法解决这个问题吗?
我认为 RTTI 不会公开默认参数值。
无论如何,最干净的解决方案是停止使用默认参数。添加采用单个参数的第三个重载。通过调用传递-1.
的两个参数重载来实现它
我在 rtti 方法调用解析中遇到问题。 我的 rtti 解析代码是以下 topic 中作为解决方案实现的代码 在这个答案中,作者使用参数长度作为 select 重载方法的决定性比较器,但在我的情况下,我想使用使用一些默认值的重载方法,这些默认值在遇到以下问题时不会被解析:
第一个模型(调用):用户
包含 public :
procedure OnMyFocusChanged(); overload;
procedure OnMyFocusChanged(Caller : Integer ; id : Integer = -1); overload;
第二个模型:User_block.pas
有这一行:CTRL.Start('User','OnMyFocusChanged',[index]);
CTRL 是一个控制器,包含一些 100% 有效的方法,它将调用上述 topic.
以下情况要求Rtti解析OnMyFocusChanged(index)
不会被解析
有办法解决这个问题吗?
我认为 RTTI 不会公开默认参数值。
无论如何,最干净的解决方案是停止使用默认参数。添加采用单个参数的第三个重载。通过调用传递-1.
的两个参数重载来实现它