2009-09-03 15 views
1

可以說,我寫了幫手的TStringList在評估/修改(Ctrl + F7)窗口中調用幫助器功能?

TslHelper = class helper for TStringList 
    function DoSth: boolean; 
end; 

然後IVE包括該助手(單位在助手的定義)在單位我想使用它。 在調試過程中,我打按Ctrl + F7 我要評估:

someStringList.DoSth 

我不能得到它的工作。可能嗎?

+0

當我嘗試它時,它工作得很好。你遇到了什麼錯誤? –

+0

您是否在Ctrl + F7中鍵入​​「評估/修改」窗口中的「someStringList.DoSth」 ? – m0f0

回答

3

類助手將新方法引入當前範圍。如果類助手不在範圍內,那麼即使他們幫助的類是,它的方法也不會生效。因此,使其工作的第一步是確保TslHelper是在您的程序中當前有效的類助手。

如果你已經滿足了這個要求,但它仍然不起作用,那麼也許調試器根本無法識別類助手。無論如何,它們都有點黑客,所以如果調試器不識別它們,我也不會感到驚訝。最終,助手只是語法糖。上面的類幫手可能很容易被寫成一個獨立的功能,如:

function TStringList_DoSth(SL: TStringList): Boolean; 

編寫功能使用當前的實施方法,然後用函數來實現你的類幫手:

function TslHelper.DoSth: Boolean; 
begin 
    TStringList_DoSth(Self); 
end; 

您可以繼續在您的普通代碼中調用類助手方法,但是您可以回退到調試器中的獨立函數。

+0

其實我只是說;] – m0f0