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

Adam Boduch

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;

FAQ

1 komentarz

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.