मैं स्रोत कोड के बिना एक बहुत बड़ी डेल्फी तृतीय पक्ष लाइब्रेरी का उपयोग कर रहा हूं, इस पुस्तकालय में अमूर्त तरीकों के साथ कई कक्षाएं हैं। मुझे यह निर्धारित करने की आवश्यकता है कि EAbstractError: Abstract Error
से बचने के लिए रनटाइम में एक descendant क्लास द्वारा एक अपवर्तक विधि लागू की जाती है और उपयोगकर्ता को कस्टम संदेश दिखाती है या इसके बजाय किसी अन्य वर्ग का उपयोग करती है।मैं कैसे निर्धारित कर सकता हूं कि एक सार विधि लागू की गई है या नहीं?
उदाहरण के लिए इस कोड में मैं रनटाइम में जांचना चाहता हूं यदि MyAbstractMethod
लागू किया गया है।
type
TMyBaseClass = class
public
procedure MyAbstractMethod; virtual; abstract;
end;
TDescendantBase = class(TMyBaseClass)
public
end;
TChild = class(TDescendantBase)
public
procedure MyAbstractMethod; override;
end;
TChild2 = class(TDescendantBase)
end;
मैं कैसे निर्धारित कर सकते हैं एक सार विधि क्रम में एक वंशज कक्षा में कार्यान्वित किया जाता है?
धन्यवाद, लेकिन अगर इस तरह से उपयोग किया जाता है तो मुझे प्रत्येक वर्ग के प्रकार के लिए एक फ़ंक्शन को लागू करने की आवश्यकता होती है और मैं एक और सामान्य समाधान पसंद करता हूं। – Salvador
मुझे यकीन नहीं है कि आपका कोड सही है या नहीं। 'कार्यान्वयन सारणी विधि (TChild2.Create) 'सच हो जाएगा, लेकिन न तो' TChild2', न ही 'TDescendantBase' ने' TMyBaseClass' के सार' MyAbstractMethod' को ओवरराइड कर दिया है। http://pastebin.com/JufNPJkg –
@rinntech: सिर के लिए धन्यवाद। मैंने सही कोड के साथ जवाब अद्यतन किया है। –