2010-05-26 11 views
5

कोई भी मानव-पठनीय संदेश में HRESULT (http://en.wikipedia.org/wiki/HRESULT) मानों को प्रोग्रामेटिक रूप से अनुवाद करने के तरीके के बारे में कुछ जानकारी प्रदान कर सकता है?HRESULT को एक पठनीय संदेश में अनुवाद करें

मुझे पता है कि उपयोगिता ERR.EXE यह करता है, लेकिन मेरे ऐप को क्रिप्टिक 0x800A03EC की बजाय मेरे उपयोगकर्ताओं को कुछ सार्थक संदेश प्रदर्शित करने की आवश्यकता है।

+0

क्या मुझे यहां कुछ याद आ रही है? आप 'कोशिश करें ... कैच' का उपयोग क्यों नहीं कर सकते और अपने उपयोगकर्ताओं को त्रुटि संदेश दिखा सकते हैं? –

+0

@ ओटाकू, मैं एक्सेल वीएसटीओ कॉल कर रहा हूं, इनमें से कुछ कॉल एक HRESULT लौटाएंगे जब वे विफल हो जाएंगे और COMException के संदेश भाग में कुछ और नहीं होगा। – code4life

+0

@ToddMain क्योंकि एक अपवाद आईडी को एक बार में दिखाने के लिए यह एक अच्छा विचार है। प्रत्येक वर्ग को यह नहीं पता होना चाहिए कि मैं जीयूआई या टर्मिनल के साथ काम करता हूं, और यह किस तरह का जीयूआई है, क्रमशः मैं एक बार एक संदेश नहीं दिखा सकता। सी ++ में मैं हर वर्ग में एक चर «LastError» बना दिया है। क्या यह सी # में अच्छा विचार नहीं है? –

उत्तर

3

उस मान के साथ HRESULT से संदेश उत्पन्न करने के लिए कोई अंतर्निहित समर्थन नहीं है। COM घटक को IErrorInfo इंटरफ़ेस का उपयोग करके स्वयं को लागू करने की आवश्यकता है।

.NET में निर्मित सीएलआर इंटरऑप समर्थन पहले से ही स्वचालित रूप से करता है, आपको कभी भी मदद करने की आवश्यकता नहीं है। जब यह एक COM इंटरफ़ेस विधि विफलता कोड लौटाता है तो यह स्वचालित रूप से उपयुक्त अपवाद फेंकता है। संदेश संपत्ति IErrorInfo से शुरू की गई है। यदि आपको संदेश के रूप में कुछ भी सभ्य नहीं मिलता है तो COM सर्वर बस इसे आपूर्ति नहीं करता है।

जो 0x800a03ec के लिए संभव है, यह कई त्रुटि कारणों के साथ एक हथियार-बैग निम्न-स्तरीय एक्सेल त्रुटि है। आप "एक्सेल त्रुटि 1004" googling द्वारा इसके लिए बहुत सारी हिट पा सकते हैं।

+0

लेकिन शायद कस्टम HRESULT के साथ किसी भी तरह का अपवाद फेंकना संभव है? इस तरह अपवाद के पास एक सूचना संदेश और इत्यादि होगा। –

3

क्या आपने FormatMessage फ़ंक्शन का प्रयास किया है? आप इसे PInvoke तंत्र का उपयोग कर सी # से उपयोग कर सकते हैं।

संबंधित मुद्दे