KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I fear this is probably a bit of a dummy question, but it has me pretty stumped. I'm looking for the simplest way possible to pass a method of an object into a procedure, so that the procedure can call the object's method (e.g. after a timeout, or maybe in a different thread). So basically I want to: Capture a reference to an object's method. Pass that reference to a procedure. Using that reference, call the object's method from the procedure. I figure I could achieve the same effect using interfaces, but I thought there was another way, since this "procedure of object" type declaration exists. The following doesn't work, but might it help explain where I'm confused...? 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; (Once the question is answered I'll remove the above code unless it aids the explanation somehow.)
Tags (comma-separated)
Save Edits
Cancel