2012-03-14 109 views
5

不知道該標題是否正確,但我需要做的是在某個集合中存儲指向指定函數的指針。我這樣做,很像聲明一個變量在Delphi中保存一個指向指定函數的指針

SomeFunctionName: string 

當然這種類型不能是字符串,問題是什麼,應該是準確?

+0

'型TGetSomeString = function:string; //讀取文檔中的過程類型 – OnTheFly 2012-03-14 13:43:23

+0

通常,對於方法(屬於類的過程或函數),您可以使用object的對象或函數(args)類型的「過程(args):對象的結果類型」類型聲明。 http://stackoverflow.com/questions/4626614/delphi-please-explain-this-type-procedure-of-object – 2012-03-15 13:04:40

回答

6

您通常會使用函數指針變量。例如:

type 
    TProcedure = procedure; 

procedure MyProc1; 
begin 
end; 

procedure MyProc2; 
begin 
end; 

var 
    Proc: TProcedure; 

..... 
Proc := MyProc1; 
Proc();//calls MyProc1 
Proc := MyProc2; 
Proc();//calls MyProc2 

這是可以想象的最簡單的例子。您可以指定具有參數列表的過程類型,對象類型的方法等。請閱讀語言指南的Procedural Types主題。

+1

SO formatter錯誤? +1 – TLama 2012-03-14 09:46:29

+3

@TLama是的,我不時看到它。我已經報告過它:http://meta.stackexchange.com/questions/125587/please-can-this-markdown-bug-be-fixed – 2012-03-14 09:51:47

+0

@JacekKwiecień請參閱David提到的頁面中名爲「Method Pointers」的部分。 – 2012-03-14 12:10:15

1

您實際上並不存儲過程/函數,而是存儲方法。

所以你應該使用TMethod來代替。 TMethod有一個對象指針和一個過程指針。

可以在另一篇文章中看到更多的細節: Save and restore event handlers

編輯:這似乎顯示出一些貯藏TControl.onClick事件請求後,問題一直是編輯回到原來.....

相關問題