2012-05-05 6 views
5

मेरे पास ऐसी स्थिति है जहां उपयोगकर्ता दो अलग-अलग पथनाम निर्दिष्ट कर सकता है, और मुझे यह जांचने की आवश्यकता है कि एक पथनाम दूसरे के अंदर "अंदर" है या नहीं। मैं यह कर सकता हूं यदि दोनों पथनाम यूएनसी हैं, या दोनों ड्राइव-अक्षर आधारित हैं, लेकिन क्या होगा यदि वे मिश्रित हों?डेल्फी - एक यूएनसी होने पर दो पथनामों की तुलना करना और एक ड्राइव अक्षर-निर्दिष्ट

क्या आप "सी: \ प्रोग्राम फ़ाइलें" जैसे "\\ [यह कंप्यूटर नाम] \ C \ प्रोग्राम फ़ाइलें" जैसे पथ को "सामान्य" कर सकते हैं? जाहिर है, मैं दूसरी तरफ नहीं जा सकता, क्योंकि यूएनसी प्रारूप में नेटवर्क फ़ोल्डर में मैप किए गए संबंधित ड्राइव अक्षर नहीं हो सकते हैं।

उत्तर

6

ExpandUNCFileName फ़ंक्शन पर एक नज़र डालें।

+0

+1 इसके अलावा [WNetGetUniversalName] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa385474%28v=vs.85%29.aspx) फ़ंक्शन भी मदद कर सकता है। – RRUZ

+0

(@RRUZ, 'WNetGetUniversalName' के लिए एक रैपर 'ExpandUNCFileName' नहीं है, या आप उस कॉल के साथ और अधिक जान सकते हैं?) मैंने गलती से सोचा था कि 'ExpandUNCFilename' सभी मामलों में काम नहीं करता है, लेकिन थोड़ा और अधिक परीक्षण से पता चलता है कि यदि 'ExpandUNCFileName'' \\' से शुरू होने वाला नाम वापस नहीं करता है क्योंकि यह एक स्थानीय ड्राइव है। तो एक पथ दूसरे के अंदर नहीं हो सकता है यदि उनके 'ExpandUNCFileName' संस्करणों में से कोई एक ड्राइव अक्षर से शुरू होता है। – rossmcm

+0

हां 'ExpandUNCFileName '' WNetGetUniversalName' फ़ंक्शन को कॉल करता है लेकिन 'UNIVERSAL_NAME_INFO_LEVEL' ध्वज के साथ, आप इस फ़ंक्शन को' REMOTE_NAME_INFO_LEVEL' मान के साथ भी उपयोग कर सकते हैं। तो आप NetGetUniversalName फ़ंक्शन का उपयोग कर एक और पूर्ण समाधान बना सकते हैं। – RRUZ

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