PDA

View Full Version : حجم هر درایو؟



amin1softco
سه شنبه 11 اسفند 1388, 12:03 عصر
چطور میشه حجم هر درایو رو بدست آورد؟؟؟////
و اینکه کدوم فلاپیه کدوم سی دیه کدوم فلاش مموریه؟؟
کدوم روش ویندوز نصبه ؟؟؟
البته تو سی

amin1softco
سه شنبه 11 اسفند 1388, 15:03 عصر
نمیشه بدون استفاده از api های ویندوز اینو نوشت که
#include <windows.h>
داخلش نباشه در ضمن آیا میشه لیست تمام درایو های موجود را با مشخصاتش بدست آورد با همین api های ویندوز و آدرس پوشه های خاص مثل تمپ و غیره؟؟؟؟؟

amin1softco
سه شنبه 11 اسفند 1388, 16:21 عصر
من می خوام روش های مختلفش رو ببینم چطوریه مثلا میشه با فراخوانی دیسک دفرگمنت همین اطلاعات رو بدست آورد یا با استفاده از سر فایل بوست که برا سی نوشتن و ....
ولی به هر حال ممنون:بوس:

mehdi.mousavi
سه شنبه 11 اسفند 1388, 16:51 عصر
سلام. اگه مظورت تو زبان C بود منم به زبان C نوشتم.

سلام.
چند تا چیز نظر من رو توی کدتون به خودش جلب کرد. اولین مساله، نحوه استفاده از مقدار بازگشتی تابع GetDriveType هستش. یعنی چی سوئیچ گذاشتید با 1، 2، 3 و ... مقایسه می کنید؟ این کار اصلا صحیح نیست. روش صحیح نوشتن این کد بدین شکله:


switch(GetDriveType(_T("C:\\")))
{
case DRIVE_UNKNOWN:
break;
case DRIVE_NO_ROOT_DIR:
break;
case DRIVE_REMOVABLE:
break;
case DRIVE_FIXED:
break;
case DRIVE_REMOTE:
break;
case DRIVE_CDROM:
break;
case DRIVE_RAMDISK:
break;
}


الان این کد هم خوانا شد، هم بعد ها دیگه نیازی به Refactoring نداره.

مساله دوم، نحوه استفاده از Win32 API ها هستش. اگر این فقط یک Sample بوده، مهم نیست، اما در Production Code، حتما باید مقادیر بازگشتی توابع رو چک کنید.

در نهایت، بهتره جای:

char buff[256];
GetSystemDirectory(buff, 256);


بنویسید:


CHAR buff[MAX_PATH];
GetSystemDirectory(buff, sizeof(buff));


در واقع، هر جا که نیاز به کارکردن با Path ها بود، بهتره از MAX_PATH استفاده کنید...
موفق باشید.

mehdi.mousavi
سه شنبه 11 اسفند 1388, 22:32 عصر
درباره من چی فکر میکنید ؟

سلام.
من اینجا نیستم که در مورد شما قضاوت کنم. ضمنا، You are not your code! کسی که از کد شما ایراد میگیره، داره از کد شما ایراد میگیره، نه از شما!

در هر حال، وقتی خودتون رو به "خوب کد نوشتن" عادت بدید، دیگه براتون فرقی نمیکنه که این کد رو اینجا Submit کنید، یا به سایت مایکروسافت. گذشته از اینها، من این حرف شما رو که جای define ها از اعداد تعریف شده استفاده کرده اید، هرگز نمی تونم قبول کنم. بخاطر سپردن اون اعداد ساده تره، یا اون اسامی؟ یعنی شما حفظ هستید که عدد 5 یعنی RAM DISC اما DRIVE_RAMDISK رو نمیتونید بخاطر بسپرید؟

در هر صورت، ببخشید که اصلا وارد این بحث شدم.

موفق باشید.