Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2008, 22:58   #1
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию Как найти размер винчестера?

Как найти размер винчестера?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 08.12.2008, 23:33   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вариант номер раз.
Апишная функция GetDiskFreeSpaceEx возвращает общий размер и размер свободный... Просуммировав данные по всем логическим дискам, можно получить искомое.
mihali4 вне форума Ответить с цитированием
Старый 08.12.2008, 23:59   #3
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

вот код для нахождения размера одного диска
Код:
__int64 GetDiskSize(LPCSTR drive)
{
	__int64 totalbytes;
	char buf[255];
	GetDiskFreeSpaceExA(drive,NULL,(PULARGE_INTEGER)&totalbytes,NULL);
	return (totalbytes);
}	
__int64 ds=GetDiskSize("C");
	printf("\n%I64d",ds);
почему ответ не такой?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.12.2008, 00:27   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

GetDiskFreeSpaceEx позволяет получать информацию не просто о свободном пространстве, а о доступном пространстве на диске для текущего пользователя.
Может, поэтому?
mihali4 вне форума Ответить с цитированием
Старый 09.12.2008, 01:01   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
почему ответ не такой?
вероятно потому что "C:"
pu4koff вне форума Ответить с цитированием
Старый 09.12.2008, 16:56   #6
in*tEr
 
Аватар для in*tEr
 
Регистрация: 07.12.2008
Сообщений: 8
По умолчанию

Да.

Получение метки диска

Код:
// Для получения метки диска напишите следующий код:
char DiskLabel[MAX_PATH];
char *DiskName = "c:\\"; // имя диска
GetVolumeInformation(DiskName, DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0);
// в DiskLabel находится метка диска

Определение размера диска (VCL вариант)

// Для определения размера диска используйте функцию DiskSize, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск. Следующий код определит размер диска С в байтах.
__int64 Size = DiskSize(3);


Определение свободного пространства на диске (VCL вариант)

// Для определения свободного пространства на диске используйте функцию DiskFree, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск. Следующий код определит размер свободного пространства на диске С в байтах.
__int64 FreeSpace = DiskFree(3);

Есть ли диск в системе ваще
// Напишите следующуй код:
Код:
if(GetDriveType("F:\\") == DRIVE_NO_ROOT_DIR)
MessageBox(NULL, "Указанного диска в системе нет!", "Внимание!", MB_OK | MB_ICONEXCLAMATION);
else
MessageBox(NULL, "Указанный диск есть в системе!", "Внимание!", MB_OK | MB_ICONINFORMATION);
Модератор: юзаем тег CODE

Последний раз редактировалось MaTBeu; 09.12.2008 в 19:16.
in*tEr вне форума Ответить с цитированием
Старый 09.12.2008, 17:25   #7
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

получилось а как из char получить LPCSTR?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.12.2008, 18:13   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
получилось а как из char получить LPCSTR?
Не понял... Про это, что ли:
Цитата:
LPCTSTR lpRootPathName
lpRootPathName - Points to a string that contains the root directory of the volume to be described.
Да можно просто getvolumeinformation('c:\',.......
или getvolumeinformation(PChar(ComboBox 1.Text),......
mihali4 вне форума Ответить с цитированием
Старый 09.12.2008, 18:18   #9
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
	

__int64 GetDiskSize(LPCSTR drive)
{
	__int64 totalbytes;
	char buf[255];
	strcpy(buf,drive);
	strcat(buf,":");
	GetDiskFreeSpaceExA(buf,NULL,(PULARGE_INTEGER)&totalbytes,NULL);
	totalbytes/=1024*1024*1024;
	return (totalbytes);
}



__int64 GetVintSize()
{
	BOOL bFlag;
	HANDLE hVol;
	char buf[255];
	char drive;
	__int64 res=0;
	for(drive='A';drive<='Z';drive++)
	{
		LPCSTR dr;
		res=GetDriveTypeA(buf);
		if (res==DRIVE_FIXED) res+=GetDiskSize(buf);
	}
	return res;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ограничить размер файла geronime PHP 8 20.02.2008 14:26
Как найти размер папки! vitalik007 Общие вопросы Delphi 6 02.02.2008 14:29
Как найти размер объекта Sibedir Общие вопросы Delphi 12 21.11.2007 06:17
Как изменить размер Видео PilGrim Компоненты Delphi 1 19.11.2007 23:03
Как узнать размер массива мандарин Общие вопросы Delphi 2 30.05.2007 19:18