2012-02-26 69 views
6

我有這個類:如何抓住TRTTIParamter的默認值

TMyClass = class 
public 
    function DoSomethingNice(const Value: string = 'Yes please!'): Boolean; 
end; 

現在,使用RTTI,是有可能得到方法DoSomethingNice的參數價值的默認值?如果是這樣,怎麼樣?

我最感興趣的是D2010解決方案,但XE也會這樣做。

+2

現在是不可能的,但你可以在這個[QC 93943](http://qc.embarcadero.com/wc/q投票cmain.aspx?d = 93943) – RRUZ 2012-02-26 11:24:08

+0

@RRUZ謝謝你,我不確定這件事,但期待它... – ComputerSaysNo 2012-02-26 12:00:19

回答

11

這是不可能的,因爲RTTI沒有關於默認參數的信息。 默認參數值僅在編譯的時候

所以,如果我們有... procedure test(x : integer = 3) ,然後調用方法沒有參數值: test()那麼它將被編譯爲test(3)

檢查這個你可以在調試器中打開CPU窗口: 和test()看起來像

mov eax, $00000003 
call test 
+0

謝謝你teran! – ComputerSaysNo 2012-02-26 12:00:37