Programowanie w języku Delphi » FAQ

W jaki sposób sprawdzić ile miejsca zajmują wszystkie pliki w danym katalogu

Oto rozwiązanie. Procedura podaje ilość miejsca w kB:

function IsSlash(const sText: String) : String;
  begin
  { sprawdzenie, czy na koncu jest znak  }
    if sText[Length(sText)] < then
      Result := sText +
else Result := sText;
  end;

procedure TMainForm.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  Found : Integer;
  Size : Int64; { <-- dla duzych plikow - ten typ zmiennej }
begin
  Size := 0; // zeruj
  {  szukaj plikow ( wszystkiech ) w danym kataogu }
  Found := FindFirst(IsSlash(Edit1.Text) + '*.*', faAnyFile, SR);
  while (Found = 0) do
  begin
    Size := Size + (SR.Size);

    Found := FindNext(SR); // szukaj dalej
  end;
  FindClose(SR);
{ dzielenie przez 1024, aby otrzymac liczbe kilobajtow }
  Size := Size div 1024;
  ShowMessage('Katalog: ' + Edit1.Text + ' zajmuje: ' + IntToStr(Size) + ' kB');
end;

1 komentarz

gilbert3 2005-06-12 12:10

Adamie, trzeba podać, że w funkcji IsSlash ma być zamiast tych apostrofów 'slash'
No i po co komu funkcja, która nie sprawdza czy są w środku podkatalogi czy ich nie ma i jeśli są to nie oblicza ich objętości podając obj. katalogu nadrzędnego.