이 질문은 아마도 약간의 모호한 질문 일 수 있습니다.하지만 꽤 괴롭습니다.개체 메서드를 Delphi에서 매개 변수로 전달한 다음 호출하는 방법?
프로 시저가 개체의 메서드를 호출 할 수 있도록 (예 : 시간 초과 후 또는 다른 스레드에서) 개체 메서드를 프로 시저로 전달하는 가장 간단한 방법을 찾고 있습니다. 기본적으로 다음과 같이하고 싶습니다.
- 개체 메서드에 대한 참조를 캡처합니다.
- 해당 참조를 프로 시저에 전달하십시오.
- 해당 참조를 사용하여 프로 시저에서 개체의 메서드를 호출하십시오.
저는 인터페이스를 사용하여 동일한 효과를 얻을 수 있다고 생각하지만,이 "객체 프로 시저"유형 선언이 있기 때문에 다른 방법이 있다고 생각했습니다.
다음 은 일이 아니지만 내가 혼란스러워하는 곳을 설명하는 데 도움이 될 수 있습니다 ...?
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;
코드를 남겨주세요. –
인상적 일부 사람들이 일을 더 힘들게하는 방법, 내가 여기서 일하는 스레드 호출 메서드를 분석하면이 접근법을 사용하여 호출을하면 훨씬 쉽게 될 것입니다. 질문에 대한 질문은 – kabstergo