मुझे डेल्फी में सहायक पुन: घोषणा में समस्या है।
HelperDecl.pas
unit HelperDecl;
interface
type
TCustomField = Word;
TCustomFieldHelper = record helper for TCustomField
public
procedure SampleMethod();
end;
implementation
procedure TCustomFieldHelper.SampleMethod();
begin
end;
end.
ScopeTest.pas
unit ScopeTest;
interface
uses HelperDecl;
type
rec = record
art: TCustomField;
end;
implementation
uses System.SysUtils;
procedure DoScopeTest();
var
a: TCustomField;
r: rec;
begin
a := r.art;
r.art.SampleMethod(); //Here has the compiler no problems
a.SampleMethod(); //Undeclared identifier 'SampleMethod'
end;
end.
लेकिन मैंने केवल अपने स्थानीय डेटा प्रकार के लिए एक सहायक को परिभाषित किया है (हाँ, यह वर्ड से लिया गया है)! SysUtils
में सहायक Word
के लिए सहायक है, मेरे कस्टम डेटा प्रकार के लिए नहीं! मेरा डेटा प्रकार बंद करो!
जब मैं uses System.SysUtils;
को uses HelperDecl;
से पहले ले जाता हूं तो यह काम करता है। लेकिन मैं एक मनमानी इकाइयों के उपयोग का आदेश देना चाहता हूं।
2 जवाब
समस्या यह है कि TCustomField
और Word
एक ही प्रकार के हैं और एक ही प्रकार के लिए दो रिकॉर्ड सहायक होना संभव नहीं है।
यदि आप इसके बजाय TCustomField
को विशिष्ट प्रकार के अनुसार जाने देते हैं, तो यह काम करेगा:
type
TCustomField = type Word;
डेल्फी केवल एकल सहायक का समर्थन करता है। जब आपके पास स्कोप में कई हेल्पर होते हैं, तो निकटतम स्कोप से हेल्पर का उपयोग किया जाता है।
आप एकाधिक सहायकों को एक ही प्रकार से परिभाषित और संबद्ध कर सकते हैं। हालांकि, स्रोत कोड में किसी विशिष्ट स्थान पर केवल शून्य या एक सहायक लागू होता है। निकटतम दायरे में परिभाषित सहायक लागू होगा। क्लास या रिकॉर्ड हेल्पर स्कोप सामान्य डेल्फी फैशन में निर्धारित किया जाता है (उदाहरण के लिए, यूनिट के उपयोग क्लॉज में दाएं से बाएं)।
संबंधित सवाल
नए सवाल
delphi
डेल्फी ऑब्जेक्ट पास्कल के उपयोग के माध्यम से देशी विंडोज, मैकओएस, लिनक्स, आईओएस और एंड्रॉइड अनुप्रयोगों के तेजी से विकास के लिए एक भाषा है। नाम डेल्फी भाषा के साथ-साथ इसके पुस्तकालयों, संकलक और आईडीई को संदर्भित करता है जो डेल्फी परियोजनाओं को संपादित करने और डिबग करने में मदद करने के लिए उपयोग किया जाता है।