如何获取TRTTIParamter的默认值

Com*_*sNo 6 delphi rtti delphi-2010 delphi-xe

我有这门课:

TMyClass = class
public
  function DoSomethingNice(const Value: string = 'Yes please!'): Boolean;
end;
Run Code Online (Sandbox Code Playgroud)

现在,使用RTTI,是否可以获取方法DoSomethingNice的参数的默认值?如果是这样,怎么样?

我最感兴趣的是D2010解决方案,但XE也会这样做.

ter*_*ran 12

这是不可能的,因为RTTI没有关于默认参数的信息.默认参数值仅在编译时使用

所以,如果我们有... procedure test(x : integer = 3) 然后调用没有参数值的方法: test()那么它将被编译为test(3)

检查一下你可以在调试器中打开CPU窗口:test()看起来像

 mov  eax, $00000003
 call test
Run Code Online (Sandbox Code Playgroud)