मुझे डर है कि यह शायद एक डमी सवाल का थोड़ा सा है, लेकिन यह मुझे काफी स्टंप है।डेल्फी में पैरामीटर के रूप में ऑब्जेक्ट विधि कैसे पास करें, और फिर इसे कॉल करें?
मैं किसी ऑब्जेक्ट की प्रक्रिया को किसी प्रक्रिया में पास करने के लिए सबसे आसान तरीका ढूंढ रहा हूं, ताकि प्रक्रिया ऑब्जेक्ट की विधि को कॉल कर सके (उदा। टाइमआउट के बाद, या शायद एक अलग थ्रेड में)। तो मूल रूप से मैं चाहता हूं:
- किसी ऑब्जेक्ट की विधि के संदर्भ को कैप्चर करें।
- एक प्रक्रिया के संदर्भ में पास करें।
- उस संदर्भ का उपयोग करके, प्रक्रिया से ऑब्जेक्ट की विधि को कॉल करें।
मुझे लगता है कि मैं इंटरफेस का उपयोग करके एक ही प्रभाव प्राप्त कर सकता हूं, लेकिन मैंने सोचा कि एक और तरीका था, क्योंकि यह "ऑब्जेक्ट की प्रक्रिया" प्रकार की घोषणा मौजूद है।
निम्नलिखित काम नहीं है, लेकिन क्या यह समझाने में सहायता कर सकता है कि मैं कहां उलझन में हूं ...?
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;
(एक बार सवाल का जवाब है, जब तक यह स्पष्टीकरण किसी भी तरह एड्स मैं ऊपर कोड से निकाल देंगे।)
कृपया कोड छोड़ दें। –
प्रभावशाली है कि कुछ लोग कभी-कभी कठिन तरीके से कैसे काम करते हैं, जहां मैं काम करता हूं वहां थ्रेड कॉल विधि का विश्लेषण करता हूं, अगर यह इस दृष्टिकोण का उपयोग करके कॉल करता है तो यह इतना आसान होगा। प्रश्न के लिए thx – kabstergo