Как определить объем свободного места на жестком диске? |
Здравствуйте, гость ( Вход | Регистрация )
Here You Can Support Our Work and .:LavTeaM:. Services |
Как определить объем свободного места на жестком диске? |
1.03.2003 - 07:21
Сообщение
#1
|
|
The Faithful one Группа: Пользователи Пользователь №: 31 Сообщений: 93 Регистрация: 28.02.2003 Из: Toril --> Forgotten Realms --> Waterdeep Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
При написании инсталляторов или программ, требующих создания или удаления файлов
хорошо бы знать конкретно, сколько места свободно в данный момент на Жестком диске. Кроме того, это весьма удобно при создании универсальных системных анализаторов, где необъодимо получить как можно более полную информацию о системе. Итак, спросим у Windows, сколько еще гигов у нас осталось... Как обычно, показываю на примере пробника - потом Вы сами сможете встроить этот код в любую, нужную вам программу, благо места он почти не занимает, и дополнительных библиотек и нестандартных API не использует. Создаем новый проект и кладем на форму кнопку - не мудрствуя лукаво назовем ее Button1. Дважды щелкаем по ней и попадаем в обработчик события 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
|
Гость |
Согласен
Но можно сделать еще проще: Код 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
|
Гость |
А кто скажет, как это сделать на асме?
Буду ошень..ошень... |
|
|
12.05.2003 - 12:08
Сообщение
#4
|
|
Завсегдатай Группа: Админы Пользователь №: 170 Сообщений: 144 Регистрация: 4.03.2003 Из: Solar system, planet Earth Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 2 раз(а) |
можно и на асме, есть соответствующий API, смотря для какой OSи
|
|
|
Текстовая версия | Сейчас: 28.04.2024 - 05:36 |