कुछ कोड में मैं ऊपर फिक्सिंग कर रहा हूँ, जो जेनरिक का भारी इस्तेमाल और interfaced प्रकार बनाता है, मैं त्रुटिडेल्फी कंपाइलर त्रुटि E2134 का अर्थ क्या है?
E2134, Type '<void>' has no type info.
हो रही है मेरा मानना है कि ऐसा इसलिए है क्योंकि मैं एक refactor के बीच में हूं जहां से कुछ गहरा नेस्टेड सेट जेनिक्स का उपयोग करने वाली इकाइयां सिंक्रनाइज़ नहीं हैं, लेकिन त्रुटि ऐसी जगह पर नहीं हो रही है जहां मैं कोड को ठीक करने के लिए त्रुटि संदेश का उपयोग कर सकता हूं, क्योंकि कोड में कुछ भी गलत नहीं है, उस स्थान पर जहां त्रुटि दिखाई दे रही है ।
यहाँ, संदर्भ, मज़ाक उड़ाया है, क्योंकि मैं कोड पोस्ट नहीं कर सकते हैं, वहाँ बहुत अधिक है:
unit GenericThing;
...
interface
...
type
...
IThingListOf<ThingT> = interface(IThingContainer)
function getEnumerator: TEnumerator<ThingT>;
function getCount: Integer;
function getThing(Index: integer): ThingT;
function getFirst: ThingT;
function IndexOf(value: ThingT): integer;
function addItem(const Thing: ThingT): ThingT;
function removeItem(const Thing: ThingT): Integer;
procedure clear;
procedure Sort; overload;
procedure Sort(const AComparer: IComparer<ThingT>); overload;
property Count: integer read getCount;
property First: ThingT read getFirst;
property Items[Index: integer]: ThingT read getThing; default;
end;
// error appears on whatever line number comes after the declaration of IThingListOf<ThingT>...end;
function AnythingYouLikeHere:Integer; // there is nothign wrong with this line, but you get the E2134 here.
ऐसा लगता है कि समस्या IThingContainer में ही है:
IThingContainer = interface ...
...
procedure DoSomething(const Param);
end;
"कॉन्स परम" के ऊपर कोई प्रकार की जानकारी नहीं है। यह मेरी राय में पास्कल/डेल्फी का एक अजीब (बगल) है, जहां आप दृढ़ टाइपिंग के विर्थ के विचार का पूरी तरह से उल्लंघन करते हैं। यह सी में "शून्य *" सूचक के रूप में कमजोर रूप से टाइप किया गया है, या डेल्फी में "सूचक" प्रकार के रूप में टाइप किया गया है, लेकिन मानक पूर्व-ऑब्जेक्ट-पास्कल आरटीएल कार्यों जैसे मूव, और ऐसे स्थानों में छोड़कर इसे शायद ही कभी उपयोग किया जाता है। पर। मेरी राय में, जेनेरिक में इस्तेमाल इंटरफेस में अनियमित पैरामीटर, या तो अनुमति दी जा सकती है, या अस्वीकृत की जानी चाहिए, लेकिन कभी-कभी अनुमति नहीं दी जाती है, और अन्य बार अनुमति नहीं दी जाती है।
यह विशेष रूप से IThingContainer उपलब्ध की परिभाषा के बिना से 2009
ब्रिलियंट। धन्यवाद। –