디렉토리의 크기를 반환하는 함수를 작성하려고합니다. 다음 코드를 작성했지만 올바른 크기를 반환하지 않습니다. 예를 들어, {pf}
디렉토리에서 실행하면 174 바이트가 반환됩니다.이 디렉토리는 크기가 여러 기가 바이트이므로 분명히 잘못되었습니다. 여기 내가 가지고있는 코드 :Inno 설치 하위 디렉토리를 포함한 디렉토리 크기를 얻습니다.
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 탐색기에서 폴더의 속성을 선택하는 것과 동일합니까? 기능이 2GB 이상의 디렉토리 크기를 지원해야하므로 FindFirst
을 사용하고 있습니다.
버전 2.2이고 Int64는 인식 할 수 없습니다. 어떤 대안을 사용할 수 있습니까? – Brian
@Brian 버전 2.2 무엇? –
2.2 inno setup studio – Brian