के साथ "टाइप टाइप टाइप नहीं है" त्रुटि क्यों मिलती है मैंने निम्नलिखित enum प्रकार घोषित किया है जिसमें मैं चाहता हूं कि पहले सदस्य को सामान्य 0 (शून्य) के बजाय 1 (एक) का क्रमिक मान प्राप्त हो। :मुझे एनम प्रकार
type
TMyEnum = (
meFirstValue = 1,
meSecondValue,
meThirdValue
);
अगर मैं TypeInfo(), जैसे फोन
GetEnumName(TypeInfo(TMyEnum), Ord(aValue));
त्रुटि:: GetEnumName के लिए एक कॉल के हिस्से के रूप(), मैं एक संकलक त्रुटि मिलती है
ऐसा क्यों है: "E2134 प्रकार 'TMyEnum' नहीं typeinfo है"?
मैं जानता हूँ कि कक्षाएं केवल है typeinfo अगर वे $ एम संकलक विकल्प सक्षम या साथ संकलित किए जाते हैं (कुछ वर्ग जो था से निकाले जाते हैं, इस तरह के TPersistent के रूप में), लेकिन मुझे नहीं लगता था कि कोई विशेष परिस्थितियों थे enum प्रकार के लिए typeinfo होने के लिए।
शायद तुम एक subrange प्रकार का उपयोग करके ऐसा करने का दर्द को कम कर सकते हैं: प्रकार TMyEnumWithDummy = ( meNOTUSED, meFirstValue, meSecondValue, meThirdValue ); TMyEnum = Succ (meNOTUSED) ..उच्च (TMyEnumWithDummy); –
हां वास्तव में, यद्यपि यदि आपके पास enum में "अंतराल" है तो एक साधारण सब्रेंज पर्याप्त नहीं होगा। जिस मामले में मैं इस पर आया था, उसके पास अंतराल था - दुर्भाग्यवश मैं शुरुआती "प्रश्न" के लिए अति-सरलीकृत था। लेकिन मैं आपके सुझाव के साथ उत्तर भी अपडेट करूंगा। – Deltics