PDA

View Full Version : سوال: بررسی تعداد درایوها و وجود فایل با تایمر - خوب یا بد ؟



#target
چهارشنبه 09 دی 1388, 10:48 صبح
من برنامه ای نوشتم که در اون تعداد درایو ها رو نیاز دارم
همچنین عدم وجود یا وجود چند تا فایل ؟
برای اینکار من یک تایمر گذاشتم که با دوره های یک ثانیه ای اقدام به بررسی تعداد درایو و وجود فایل می کنه
البته اینکار در سرعت برنامه و کامپیوتر تا اونجایی که من امتحان کردم نداره ( کامپیوتر من خیلی قدیمی رم 256 و هارد 40 IDE ) می خواستم ببینم آیا این کار باعث آسیب رساندن به کامپیوتر هم میشه

و در Borland C++Builder 2009 چه روش دیگری برای اینکار وجود داره ؟

mk8800
جمعه 11 دی 1388, 20:00 عصر
خوب دوست من ساده ترین را استفاده از تابع زیر که باید با یه دستورfor از A تا Z را بررسی کنی اگر صفر برگردوند اون وقت درایو مورد نظر وجود نداره...
GetDriveType(String DriveLetter)
که البته نوع درایو را هم نشون میده یعنی مثلا سی دی , فلش‏،‏هارد درایو و...
که اطلاعات بیشتر خواستی بگو
برای جلوگیری از کاهش سرعت هم از دستور sleep استفاده که وقفه زمانی ایجاد میکنه:
Sleep(int Delay)

ولی راه اصولی تری هم وجود داره و اون استفاده از تابع GetLogicalDrives که عددی را بر می گردونه که هر بیتش نشونه وجود یه درایو مثلا کوچکترین بیت وجود درایو A و به همین ترتیب تا Z
هر بیتی که یک باشه یعنی اون درایو وجود داره
GetLogicalDrives()

کمکی خواستی بگو
ایمل بنده:TNT8800@GMAIL.COM

:خجالت::خجالت::خجالت:

mk8800
دوشنبه 14 دی 1388, 19:05 عصر
دوست عزیز داشتم توی کد یه برنامه چرخ میزدم که تابعی به نام GetLogicalDriveStringsA برخودم و کمی باهاش ور رفتم تا بهترین روش را برای کاری که شما می خواهید انجام دهید را پیدا کنم به مد زیر توجه کنید:

byte N=GetLogicalDriveStringsA(52,(char*)new char[52])/4;
ShowMessage(N);


N در عبارت بالا نشان دهنده تعداد دریو هاست.

توضیح بیشتر:
تابع

DWORD GetLogicalDriveStrings(DWORD nBufferLength, char* lpBuffer);

میتونه نام درایو های موجود را به صورت رشته ای متصل به هم بر میگردونه.
متغییر اول طول رشته ای که باید تو متغیر دوم(که از نوع Pointer است)نوشته بشه.
متغییر دوم یک pointer است که باید رشته حاوی نام درایو ها است که هر دریوا ۴ کاراکتر را اشغال میکنه
(مثل:‏A:\0)که منظور از "0\" یک کاراکتر خالی است دقت کنید مقدار ان صفر است که در پایان رشته ها وجود دارد.
مقدار بازگشتی مقداری عددی است که طول رشت که در متغییر دوم نوشته شده را نشان میدهد.

امید وارم موفق باشید.

:خجالت::خجالت::خجالت: