Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата Johny777:
Используется вин апи функция GetDiskFreeSpaceEx, которая пишет во входные переменные свободный и полный размер харда в байтах, что точнее чем округлённые значения в мегабайтах »
Johny777, объяви _LARGE_INTEGER вместо _ULARGE_INTEGER как показано ниже, иначе GetDiskFreeSpaceEx неправильно посчитает при отрицательном LowPart. В Inno для GetDiskFreeSpaceEx нужны знаковые 64-битные числа. , а не то, что в MSDN указано.
Код: Выделить весь код
type
    _ULARGE_INTEGER = record
        LowPart: Longint;
        HighPart: DWORD;
    end;

function Size64(QuadPart: _ULARGE_INTEGER): Extended;
begin
    Result := (QuadPart.HighPart + integer(QuadPart.LowPart < 0))*4.294967296E9 + QuadPart.LowPart;
end;

Последний раз редактировалось El Sanchez, 21-02-2013 в 13:57. Причина: fix

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:34, 20-02-2013 | #1693