c++ - Why does GetLastError() return different codes during debug vs "normal" execution? -


  प्रयास करें {pConnect = sess-> GetFtpConnection (ftpArgs.host, ftpArgs.userName, ftpArgs.password, port , असत्य ); } पकड़ (सी इंटरटेनिक्शन * पीईएक्स) {loginErrCode = GetLastError (); Printf ("लॉगिनईर्र कोड:% d \ n", लॉगिन एरोकोड); अगर (loginErrCode == 12013) {printf ("गलत उपयोगकर्ता नाम! \ N"); बाहर निकलने के (0); } Else if (loginErrCode == 12014) {printf ("गलत पासवर्ड! \ N"); बाहर निकलने के (0); } और अगर (loginErrCode == 12007) {printf ("गलत सर्वर नाम! \ N"); बाहर निकलने के (0); } अन्य // सभी अन्य त्रुटियों को प्रदर्शित करें {टीसीएचएआर एसज़ [1024]; पीएक्स- & gt; GetErrorMessage (एसजे, 1024); प्रिंटफ़ ("त्रुटि!% S \ n, sz); pEx- & gt; हटाएं (); बाहर निकलें (0);}  

जब यह कोड दृश्य स्टूडियो से एक जानबूझकर गलत उपयोगकर्ता से चलता है नाम, GetLastError () 12014 (अपेक्षित) देता है।

हालांकि, जब कमांड लाइन से समान कोड चलाते हैं (उसी सटीक गलत उपयोगकर्ता नाम के साथ) GetLastError () 2 देता है? ( GetErrorMessage ( ) गलत पासवर्ड लौटाता है)

मुझे समझ नहीं आता कि अंतर क्या है।

इसके अलावा, मैं प्रोग्राम को उस प्रक्रिया को जोड़ते समय कमांड लाइन से चलाया दृश्य स्टूडियो में, डीबग करने के लिए। मुझे 12014 प्राप्त हुआ।

जब भी डीबगर शामिल होता है, मुझे 12014 मिलता है। जब मैं समान पैरामीटर के साथ "सामान्य" निष्पादन योग्य चलाता हूं, तो मुझे 2 मिलता है।

< P> क्या WinInet त्रुटि कोड नहीं मिले हैं जब मैं प्रोग्राम को डिबगर से बाहर चलाता हूं? क्या मुझे कार्यक्रम को अलग तरह से संकलित करने की आवश्यकता है?

किसी भी मदद की सराहना की जाती है। धन्यवाद।

< P> इस संबंध में मेरी स्मृति थोड़ा धुंधली है, लेकिन अगर आप GetLastError () कॉल करने के बजाय CInternetException ऑब्जेक्ट के m_dwError क्षेत्र का उपयोग करते हैं, तो क्या होता है ?

मेरा अनुमान यह है कि त्रुटि कोड को वास्तविक त्रुटि और आपकी कॉल GetLastError () के बीच रीसेट करने के लिए कुछ कारण हो रहा है। मुझे नहीं पता है कि डिबगर के बाहर चलते समय ऐसा क्यों होता है, लेकिन डीबगर के अंदर नहीं। हालांकि, एमएफसी त्रुटि कोड को कैश करता है जिससे फेंक दिया गया ऑब्जेक्ट में अपवाद होता था, इसलिए आप कैश किए गए मान का उपयोग करने में सक्षम होना चाहिए, चाहे अपवाद फेंकने के बाद से कौन सी एपीआई कॉल हो गए हों।

GetErrorMessage () सही त्रुटि स्ट्रिंग देता है क्योंकि यह m_dwError फ़ील्ड को कॉल करने के बजाय GetLastError () का उपयोग करता है।


Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -