Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Temporary Internet Files: Größe u. Anzahl Files herausfi

  Alt 12. Aug 2006, 19:48
Um die unterschiedlichen CacheEntryTypes zu zählen kannst du diesen leicht modifizierten Code verwenden:

Delphi-Quellcode:
function CacheSizeEx(s, sCount: TStrings): Int64;
const
  MAXINFOSIZE = 4 shl 10;
var
  hCache: THandle;
  dwSize: Cardinal;
  i64: Int64;
  pInfo: PInternetCacheEntryInfo;
  cet: String;
  index: Integer;
begin
  Result := 0;
  GetMem(pInfo, MAXINFOSIZE);
  pInfo.dwStructSize := MAXINFOSIZE;
  dwSize := MAXINFOSIZE;
  hCache := FindFirstUrlCacheEntry(nil, pInfo^, dwSize);
  if hCache <> 0 then
  begin
    s.Clear;
    repeat
      cet := IntToHex(pInfo.CacheEntryType, 8);
      index := sCount.IndexOfName(cet);
      if index < 0
        then sCount.Values[cet] := '1'
        else sCount.ValueFromIndex[index] := IntToStr(Succ(StrToInt(sCount.ValueFromIndex[index])));
      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;
Form1.ListBox2 hat übrigens nichts in der Routine verloren - du übergibst deine Items als Argument an die Funktion:

Delphi-Quellcode:
procedure TForm1.DemoButtonClick(Sender: TObject);
begin
  SizeLabel.Caption := Format('%.n', [1.0 * CacheSize(ListBox2.Items)]);
end;
Viel Spaß noch mit deinem Projekt.

marabu
  Mit Zitat antworten Zitat