डेल्फी में एप्लिकेशन लिखते समय एक्सेस उल्लंघनों का पता लगाने और ठीक करने में सहायता के लिए आप कौन सी युक्तियां साझा कर सकते हैं?एक्सेस उल्लंघन उल्लंघन त्रुटियों को डीबग करना?
मेरा मानना है कि एक्सेस उल्लंघन आमतौर पर स्मृति में कुछ एक्सेस करने का प्रयास करके होता है जिसे अभी तक ऑब्जेक्ट आदि जैसे नहीं बनाया गया है?
मुझे यह पता लगाना मुश्किल लगता है कि एक्सेस उल्लंघनों को किस प्रकार ट्रिगर करता है और फिर आवश्यक परिवर्तन करने के लिए कहां प्रयास करें और उन्हें रोकें।
एक उदाहरण एक निजी परियोजना है जिसे मैं अभी काम कर रहा हूं। मैं TTreeView नोड में संग्रहीत कर रहा हूं। डेटा प्रत्येक नोड के लिए कुछ डेटा संपत्ति। नोड्स को कई चयनित और निर्यात किया जा सकता है (निर्यात प्रत्येक चयनित नोड के माध्यम से पुनरावृत्त करता है और टेक्स्ट फ़ाइल में विशिष्ट डेटा सहेजता है - पाठ फ़ाइल में सहेजी गई जानकारी nodes.data में संग्रहीत होती है)। फ़ाइलों को ट्रीव्यू में भी आयात किया जा सकता है (टेक्स्ट फ़ाइलों की सामग्री को node.data में सहेजना)।
उस उदाहरण में समस्या यह है कि यदि मैं ट्रीव्यू में फ़ाइलों को आयात करता हूं और फिर उन्हें निर्यात करता हूं, तो यह सही काम करता है। लेकिन अगर मैं क्रम में एक नोड जोड़ सकते हैं और उन्हें निर्यात मैं:
"पता 00,405,772 पर पहुँच उल्लंघन मॉड्यूल 'Project1.exe' में पता 00000388. की पढ़ें।"
इस पर मेरे विचारों को जिस तरह से मैं नोड्स बनाने के लिए डेटा आवंटित कर रहा हूं, शायद अलग-अलग तरीके से जब मैं इसे आयात करता हूं तो इसे असाइन करता हूं, लेकिन यह सब ठीक दिखता है। एक्सेस उल्लंघन केवल निर्यात करते समय दिखाई देता है, और यह आयातित फ़ाइलों के साथ कभी नहीं होता है।
मैं उपर्युक्त उदाहरण के लिए एक फिक्स की तलाश नहीं कर रहा हूं, लेकिन मुख्य रूप से सलाह/युक्तियाँ कि इस प्रकार की त्रुटियों को कैसे ढूंढें और ठीक करें। मुझे अक्सर एक्सेस उल्लंघन नहीं मिलता है, लेकिन जब मैं करता हूं तो उन्हें ट्रैक करना और ठीक करना मुश्किल होता है।
तो सलाह और सुझाव बहुत उपयोगी होंगे।
आप इस प्रश्न के उत्तर को स्वीकार करने के लिए * रास्ता * बहुत तेज़ थे! चूंकि आप डिबगिंग पर युक्तियों के लिए पूछ रहे हैं (यानी: एक उदाहरण के लिए ठोस सहायता नहीं है), आप कैसे जानते हैं कि लार्स का केवल 38 मिनट में सबसे अच्छा जवाब था? इस तरह का सवाल कई उत्तरों के लिए begs, लेकिन आप उन्हें पाने के लिए सबसे अधिक संभावना नहीं है, क्योंकि आप स्पष्ट रूप से समाधान मिला। –
बहुत सच है, हालांकि लार्स ने जवाब को बहुत अच्छा कवर किया, इसलिए मैंने स्वीकार किया, लेकिन आप सही हैं कि मुझे अधिक जानकारी के लिए अधिक इंतजार करना चाहिए - जो कि मैं सामान्य रूप से करता हूं, किसी कारण से मैंने सामान्य सामान्य स्वीकार किया। –