कार्यक्रम के विकास के दौरान मैंने गलती से देखा कि कक्षाओं के भीतर घोषित सभी प्रकारों की वैश्विक दृश्यता है।निजी प्रकार सभी के लिए दृश्यमान हैं?
मैंने हमेशा सोचा है कि उनकी दृश्यता कक्षा तक ही सीमित है जब तक कि टाइप प्रकार नाम से TMyClass.TMytype.Value;
हूँ मैं निम्नलिखित की तरह वास्तव में गलत यहाँ कुछ कर रही है, संरचनाओं के रूप में:
unit MyTest;
interface
type TMyTest = class
constructor Create;
strict private
type TMyType = (NUL, SLEEP);
end;
implementation
// ...
इस (MyTest) इकाई का उपयोग करता है अन्य इकाइयों में संघर्ष का कारण बनता है।
यदि इकाई नींद (100) है; कॉल करें, यह TMyTest.TMyType.SLEEP के साथ संघर्ष करेगा और संघर्षों की रोकथाम इसलिए मैंने पहली जगह कक्षा और टीएमटी टाइप के अंदर एसएलईईपी को समाहित किया था।
कामकाज के लिए कोई सुझाव?
यह वास्तव में आश्चर्यजनक है लेकिन जैसा कि डेविड ने अपने उत्तर में उल्लेख किया है: यह enum मूल्यों के लिए जानबूझकर है। एफवाईआई: कई वर्षों तक डेल्फी में enum मूल्यों का दायरा संघर्ष एक मुद्दा रहा है। तो सम्मेलन से, डेवलपर्स आम तौर पर enum मान prefix। जैसे 'TMyType = (mtNUL, mtSLEEP);' (कोड शैली स्थिरता सुनिश्चित करने के लिए विचार करने योग्य कुछ भी।) एक और कामकाज इसके सामान्य प्रयोज्यता के लिए उल्लेखनीय है: जहां पहचानकर्ता संघर्ष करते हैं, आप संघर्ष को हल करने के लिए इच्छित इकाई नाम को उपसर्ग कर सकते हैं। जैसे 'विंडोज़ स्लीप' –