2012-12-28 87 views
9

我想知道是否有可能實現這樣的事情:德爾福回調?

procedure waitandcall(time,@MyProcedureOrFunction)

其執行的函數或過程我已經創建了?

我不確定它們是否被稱爲回調。

回答

17

這是絕對有可能的,你甚至不需要你的功能之前。

事實上,所有的事件都是基於此。

開始通過定義類型爲你的函數/過程

type 
    TMyProc = procedure(Param1: Integer); 

然後你可以使用你的程序鍵入任何地方,只要你的程序的簽名相匹配的類型。

如果您使用的是對象的方法,而不是一個簡單的過程/函數,你需要使用of object

type 
    TMyMethod = procedure(Param1: Integer) of object; 

從內部調用你的回調,你可以使用這樣的事情:

procedure DoAndCallBack(MyProc: TMyProc) 
begin 
    MyProc(1); 
end; 
+0

謝謝你,快:)! – ELCouz

+0

剛剛添加了一個關於如何使用回調的示例。 – ESG

+0

如果我明白這意味着我可以通過任何程序? – ELCouz

3

回調恰恰都是那些被稱爲,和Delphi是完全能夠既創建和調用它們。它們也被稱爲函數指針。請參閱文檔中的Procedural Types

+0

你有一個例子,如何正確使用它們?我的意思是我需要在waitandcall函數內寫入來執行該過程嗎? – ELCouz

+1

如果它的名字的確如此,你可以用兩條指令來做:「睡眠(t)」; F;' –

+0

基本上我想要一個「阻塞」程序(對於一個線程)來計算時間(gettickcount)和等待(sleep),然後啓動任何程序 – ELCouz