Hallo Go2EITS,
mit diesem Code und einem Blick in die
API Dokumentation solltest du ein Stück weiter kommen:
Delphi-Quellcode:
uses
WinInet;
function CacheSize(s: TStrings): Int64;
const
MAXINFOSIZE = 4
shl 10;
var
hCache: THandle;
dwSize: Cardinal;
i64: Int64;
pInfo: PInternetCacheEntryInfo;
begin
Result := 0;
GetMem(pInfo, MAXINFOSIZE);
pInfo.dwStructSize := MAXINFOSIZE;
dwSize := MAXINFOSIZE;
hCache := FindFirstUrlCacheEntry(
nil, pInfo^, dwSize);
if hCache <> 0
then
begin
s.Clear;
repeat
s.Add(StrPas(pInfo.lpszSourceUrlName));
Int64Rec(i64).Hi := pInfo.dwSizeHigh;
Int64Rec(i64).Lo := pInfo.dwSizeLow;
Result := Result + i64;
dwSize := MAXINFOSIZE;
until not FindNextUrlCacheEntry(hCache, pInfo^, dwSize);
FindCloseUrlCache(hCache);
end;
FreeMem(pInfo, MAXINFOSIZE);
if hCache = 0
then
raise Exception.Create(SysErrorMessage(GetLastError));
end;
Ich habe die byte size berechnet, bei nicht komprimierten Ordnern interessiert vielleicht eher die cluster size.
Grüße vom marabu
1. Hatte FreeMem() vergessen ...
2. Jeder Entry kann eine andere Size haben ...