Tôi lo sợ điều này có lẽ là một câu hỏi giả, nhưng nó khiến tôi khá bối rối.Làm thế nào để vượt qua một phương pháp đối tượng như một tham số trong Delphi, và sau đó gọi nó?
Tôi đang tìm cách đơn giản nhất có thể để truyền phương thức của đối tượng vào quy trình, để thủ tục có thể gọi phương thức của đối tượng (ví dụ: sau khi hết giờ hoặc có thể trong một chuỗi khác). Vì vậy, về cơ bản tôi muốn:
- Chụp tham chiếu đến phương pháp của đối tượng.
- Chuyển tham chiếu đó đến quy trình.
- Sử dụng tham chiếu đó, hãy gọi phương thức của đối tượng từ quy trình.
Tôi hình tôi có thể đạt được hiệu ứng tương tự bằng cách sử dụng giao diện, nhưng tôi nghĩ có một cách khác, vì khai báo kiểu "thủ tục đối tượng" này tồn tại.
sau đây không hoạt động, nhưng nó có thể giúp giải thích nơi tôi bị nhầm lẫn ...?
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;
(Khi câu hỏi được trả lời tôi sẽ loại bỏ các mã trên trừ khi nó hỗ trợ việc giải thích bằng cách nào đó.)
Vui lòng để lại mã. –
ấn tượng như thế nào một số người làm những việc theo cách khó khăn hơn, phân tích các phương pháp gọi thread ở đây, nơi tôi làm việc, nó sẽ dễ dàng hơn nhiều nếu họ đã thực hiện các cuộc gọi bằng cách sử dụng phương pháp này. thx cho câu hỏi – kabstergo