Я пытаюсь написать функцию, которая возвращает размер каталога. Я написал следующий код, но он не возвращает правильный размер. Например, когда я запускаю его в каталоге {pf}
, он возвращает 174 байта, что явно неверно, так как этот каталог имеет размер в несколько гигабайт. Вот код, у меня есть:Inno Setup получить размер каталога, включая подкаталоги
function GetDirSize(DirName: String): Int64;
var
FindRec: TFindRec;
begin
if FindFirst(DirName + '\*', FindRec) then
begin
try
repeat
Result := Result + (Int64(FindRec.SizeHigh) shl 32 + FindRec.SizeLow);
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end
else
begin
Result := -1;
end;
end;
Я подозреваю, что функция FindFirst
не включает подкаталоги, поэтому я не получаю правильный результат. Поэтому, как я могу вернуть правильный размер каталога, т. Е. Включая все файлы во всех подкаталогах, так же, как выбрать «Свойства в папке» в проводнике Windows? Я использую FindFirst
, поскольку функция должна поддерживать размеры каталогов более 2 ГБ.
У меня есть версия 2.2 и Int64 не распознается. Какую альтернативу я могу использовать? – Brian
@Brian Версия 2.2 чего? –
2.2 inno setup studio – Brian