ディレクトリのサイズを返す関数を作成しようとしています。私は次のコードを書いたが、正しいサイズを返していない。たとえば、{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
を使用しています。機能は2GBを超えるディレクトリサイズをサポートする必要があるためです。
私はバージョン2.2で、Int64は認識できません。どのような選択肢が使えますか? – Brian
@Brianバージョン2.2の何ですか? –
2.2 inno setup studio – Brian