IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила форума Всем прочитать перед созданием темы!
 
Ответить в данную темуНачать новую тему
Как определить объем свободного места на жестком диске?
MonK
сообщение 1.03.2003 - 07:21
Сообщение #1


The Faithful one
Иконка группы

Группа: Пользователи
Пользователь №: 31
Сообщений: 93
Регистрация: 28.02.2003
Из: Toril --> Forgotten Realms --> Waterdeep
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 0 раз(а)



При написании инсталляторов или программ, требующих создания или удаления файлов
хорошо бы знать конкретно, сколько места свободно в данный момент на Жестком диске.
Кроме того, это весьма удобно при создании универсальных системных анализаторов, где
необъодимо получить как можно более полную информацию о системе.
Итак, спросим у Windows, сколько еще гигов у нас осталось...

Как обычно, показываю на примере пробника - потом Вы сами сможете встроить этот код
в любую, нужную вам программу, благо места он почти не занимает, и дополнительных
библиотек и нестандартных API не использует.

Создаем новый проект и кладем на форму кнопку - не мудрствуя лукаво назовем ее Button1. biggrin.gif
Дважды щелкаем по ней и попадаем в обработчик события OnClick.
в разделе var (для тех, кто еще в танке, var вставляется перед begin) объявляем переменные:
FreeBytesAvailableToCaller : TLargeInteger;
FreeSize : TLargeInteger;
TotalSize : TLargeInteger;
Дальше, уже после Begin пишем:
GetDiskFreeSpaceEx( 'c:', FreeBytesAvailableToCaller, Totalsize, @FreeSize );
//На форму можно также положить, скажем..., StaticText и сделать вывод результатов в него:
Statictext1.autosize:=false;
Statictext1.width:=220;
Statictext1.height:=30;
Statictext1.borderstyle:=sbsSunken;
Statictext1.Caption:='Свободно на диске (байт): '+
inttostr(FreeBytesAvailableToCaller)+#13+
'Всего жесткий диск (байт): '+inttostr(TotalSize);

Вроде и все - жмем F9 и проверяем.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Гость_ych_boriss_*
сообщение 13.03.2003 - 19:00
Сообщение #2





Гость









Согласен wink.gif
Но можно сделать еще проще:
Код
Label1.Caption := Format('TOTAL SIZE : %15d'#13#10'FREE SIZE  : %15d', [DiskSize(0), DiskFree(0)]);


функции DiskSize и DiskFree определены след. образом:
Код
[B]function[/B] DiskSize(DRIVE: Byte): Int64;
[B]function[/B] DiskFree(DRIVE: Byte): Int64;


обе возвращают размер в байтах, соответственно всего драйва и его свободного места.
Код
DRIVE: Byte
- определяет номер драйва, параметры которого получаем
0 - текущий драйв, откуда прога стартует
1 - 'A'
2 - 'B'
3 - 'C'
4 - 'D'
и т.д.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Гость_Fox_*
сообщение 10.05.2003 - 16:09
Сообщение #3





Гость









А кто скажет, как это сделать на асме?
Буду ошень..ошень...
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
mator
сообщение 12.05.2003 - 12:08
Сообщение #4


Завсегдатай
Иконка группы

Группа: Админы
Пользователь №: 170
Сообщений: 144
Регистрация: 4.03.2003
Из: Solar system, planet Earth
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 2 раз(а)



можно и на асме, есть соответствующий API, смотря для какой OSи smile.gif
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 29.03.2024 - 17:30