これはおそらく少しダミーの質問だと思いますが、かなり困惑しています。
プロシージャがオブジェクトのメソッドを呼び出すことができるように、オブジェクトのメソッドをプロシージャに渡す最も簡単な方法を探しています (たとえば、タイムアウト後、または別のスレッドで)。だから基本的に私はしたい:
- オブジェクトのメソッドへの参照をキャプチャします。
- その参照をプロシージャに渡します。
- その参照を使用して、プロシージャからオブジェクトのメソッドを呼び出します。
インターフェイスを使っても同じ効果が得られると思いますが、この「オブジェクトの手続き」型宣言が存在するので、別の方法があると思いました。
以下は機能しませんが、私が混乱している場所を説明するのに役立つでしょうか...?
interface
TCallbackMethod = procedure of object;
TCallbackObject = class
procedure CallbackMethodImpl;
procedure SetupCallback;
end;
implementation
procedure CallbackTheCallback(const callbackMethod: TCallbackMethod);
begin
callbackMethod();
end;
procedure TCallbackObject.CallbackMethodImpl;
begin
// Do whatever.
end;
procedure TCallbackObject.SetupCallback;
begin
// following line doesn't compile - it fails with "E2036 Variable required"
CallbackTheCallback(@self.CallbackMethodImpl);
end;
(質問に答えたら、何らかの形で説明に役立つ場合を除き、上記のコードを削除します。)