سؤال

وأنا باستخدام التالية للبحث عن ملف تعريفه على أنه DB_CONFIG_FILE_PATH_1 الماكرو.

wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);

إذا كان الملف في C: \ دليل، وجدت. ولكن، إذا كان الملف في واحدة من الدلائل الفرعية وظيفة لا العثور عليه.

ويمكن لبعض شرح كيفية البحث في جميع محركات الأقراص بما في ذلك الدلائل لملف مع الدالة أعلاه.

وأنا لا تستخدم وظيفة FindFirstFile ل، أنا غير قادر على استرداد المسار إلى الملف على الرغم من أن ترجع الدالة مؤشر إلى الملف.

لوضعها، أريد اسم المسار الكامل للملف. وأنا أعلم أن اسم الملف، ولكن لا أعرف أين هو على شركات.

هل كانت مفيدة؟

المحلول

لبحث الدلائل في التعليمات البرمجية الأصلية على Win32، تحتاج إلى أن تفعل ذلك بنفسك، وذلك باستخدام FindFirstFile ثم recursing إلى الدلائل.

والقيمة عودة FindFirstFile ليست مؤشر ملف - يرد معلومات الملف في بنية WIN32_FIND_DATA عاد. ويستخدم المؤشر في المكالمات إلى FindNextFile لمواصلة البحث. للحصول على اسم المسار الكامل خلال البحث، سوف تحتاج إلى تتبع ما الدليل الذي يتم حاليا في وإلحاق أسماء الدليل اكتشافها إلى المسار.

وSearchPath يبحث فقط في متغير بيئة PATH أو المعلمة الأولى إذا كان موجودا ولا الدلائل البحث.

نصائح أخرى

وGetCurrentDirectory() ينبغي أن أقول لك الطريق:

http://msdn.microsoft.com/ أون لنا / مكتبة / aa364934 (VS.85) .aspx اتصال

ووالوسيطة الثانية من FindFirstFile():

http://msdn.microsoft.com/ أون لنا / مكتبة / aa364418 (VS.85) .aspx اتصال

والذي هو هيكل WIN32_FIND_DATA ينبغي أن أقول لك اسم الملف:

http://msdn.microsoft.com/ أون لنا / مكتبة / aa365740 (VS.85) .aspx اتصال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top