Для получения размера свободного места на дисках, ёмкость которых больше 2Гб,
необходимо использовать функцию GetDiskFreeSpaceEx. Ниже приведён небольшой
пример использования данной функции:
var
FreeBytesAvailableToCaller: TLargeInteger;
FreeSize: TLargeInteger;
TotalSize: TLargeInteger;
begin
GetDiskFreeSpaceEx('c:',
FreeBytesAvailableToCaller,
Totalsize,
@FreeSize);
end;
Результатом будет значение в байтах.
Here's the translation of the Delphi code snippet into Russian:
Код на языке Delphi!
Код использует функцию GetDiskFreeSpaceEx для получения свободного пространства на дисковом устройстве. В частности, он запрашивает доступ к дискам 'C:'.
В переменных:
1. FreeBytesAvailableToCaller: количество свободных байтов, доступных вызывающему процессу.
2. FreeSize: общее количество свободных байтов на томе.
3. TotalSize: общий размер тома в байтах.
Функция принимает четыре параметра: путь к диску и три переменные для хранения результатов. В этом случае, путь к диску - 'C:', что означает запрос к дискам C:.
Результат будет иметь значение в байтах, как вы упомянули.
Дополнительные заметки:
TLargeInteger - тип данных Delphi, представляющий большое целочисленное значение.
Синтаксис @FreeSize используется для передачи адреса переменной FreeSize функции GetDiskFreeSpaceEx, что позволяет функции записать результат в переменную.
Если вам нужно преобразовать свободное пространство из байтов в более человекочитаемый формат, например, мегабайты (МБ) или гигабайты (ГБ), вы можете использовать следующий код:
var
FreeBytesAvailableToCaller: TLargeInteger;
FreeSize: TLargeInteger;
TotalSize: TLargeInteger;
begin
GetDiskFreeSpaceEx('c:',
FreeBytesAvailableToCaller,
TotalSize,
@FreeSize);
// Преобразование свободного пространства из байтов в мегабайты (МБ)
FreeSizeMB := FreeSize / 1024 * 1024;
// Или преобразование в гигабайты (ГБ), если нужно
FreeSizeGB := FreeSize / 1024 * 1024 * 1024;
end;
Код просто делит значение FreeSize на 1024 два раза для преобразования из байтов в мегабайты, или использует три деления для преобразования в гигабайты.
Для определения размера свободного места на диске с ёмкостью более 2 Гб можно использовать функцию GetDiskFreeSpaceEx, которая возвращает результат в байтах.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS