Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verzeichnisgröße ermitteln (https://www.delphipraxis.net/1914-verzeichnisgroesse-ermitteln.html)

CalganX 30. Dez 2002 13:24


Verzeichnisgröße ermitteln
 
Hi,
wie kann ich die Größe eines Verzeichnisses (inkl. Untervrezeichnisse) herausbekommen?

Chris

Alexander 30. Dez 2002 13:58

Delphi-Quellcode:
function GetDirSize(dir: string; subdir: Boolean): Longint;
var
  rec: TSearchRec;
  found: Integer;
begin
  Result := 0;
  if dir[Length(dir)] <> '\' then dir := dir + '\';
  found := FindFirst(dir + '*.*', faAnyFile, rec);
  while found = 0 do
  begin
    Inc(Result, rec.Size);
    if (rec.Attr and faDirectory > 0) and (rec.Name[1] <> '.') and (subdir = True) then
      Inc(Result, GetDirSize(dir + rec.Name, True));
    found := FindNext(rec);
  end;
  FindClose(rec);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Caption := FloatToStr(GetDirSize('e:\download', False) / Sqr(1024)) + ' MBytes';
  label2.Caption := FloatToStr(GetDirSize('e:\download', True) / Sqr(1024)) + ' MBytes';
end;
Hoffe es funzt, aus SwissdelphiCeter

CalganX 30. Dez 2002 14:16

Stimmt und funzt...

Danke

Chris

Christian Seehase 30. Dez 2002 15:37

Moin Zusammen,

und ich werd's einfach nicht müde darauf hinzuweisen :mrgreen:

... (rec.Name[1] <> '.') ...

ist falsch.

Es muss

... (rec.Name <> '.') and (rec.Name <> '..') ...

lauten.

ninja 7. Nov 2003 10:28

Re: Verzeichnisgröße ermitteln
 
hallo.
ich habe diesen source-code mal ausprobiert, aber bei mir meldet er immer den fehler "Ungültiges Zeichen in Eingabedatei:' '($A0)" beim compilieren.
habe ich eine unit vergessen?? oder habe ich irgendwo vergessen mein verzeichniss anzugeben??
thx im voraus
ninja :roll:

Sharky 7. Nov 2003 10:31

Re: Verzeichnisgröße ermitteln
 
Hai ninja,

beim copy und paste sind da fehlerhafte Zeichen in deinen Editor gekommen.
Lösche mal die Leerzeichen am anfang jeder Zeile.

ninja 7. Nov 2003 10:34

Re: Verzeichnisgröße ermitteln
 
stimmt.
danke, werd ich mir gleich hinter die ohren schreiben, damit sowas nicht nochmal passiert.
greetz ninja :zwinker:

ninja 8. Nov 2003 10:07

Re: Verzeichnisgröße ermitteln
 
hallo.
ich habe da noch mal eine frage dazu, und zwar möchte ich gerne die ausgelesene verzeichnissgröße
weiterverwenden und weitergeben z.B. zum Umrechnen oder an eine Progressbar als Max-Wert.
ich habe es auch schon versucht, bin aber an der Variablendeklaration gescheitert.
Probleme habe ich z.B. mit der Umwandlung der Variablen.
Ich weis nicht genau wann ich z.B. StrToInt oder IntToStr einsetzen muß.
Oder was ich überhaupt nehmen muß um die Werte weiterzugeben.
Vieleicht kann mir ja jemand helfen.
Thx im vorraus
ninja

himitsu 8. Nov 2003 10:22

Re: Verzeichnisgröße ermitteln
 
1.
Delphi-Quellcode:
Var G: LongInt;

G := GetDirSize('e:\download', True);

{G enthält die Größe des Verzeichnisses (inkl. Untervrezeichnisse) in Byte}

2.
Delphi-Quellcode:
StrToInt: String => Integer
IntToStr: Integer => String
aus der OH:
Zitat:

IntToStr konvertiert den mit Value angegebenen Integer-Wert in einen String mit der dezimalen Darstellung der Zahl.
Zitat:

StrToInt konvertiert den in S angegebenen String in einen Integer-Wert. S muss die Entsprechung eines ganzzahligen Wertes (dezimal oder hexadezimal) sein. Enhält er keinen gültigen Wert, wird eine EConvertError-Exception ausgelöst.

ninja 8. Nov 2003 11:27

Re: Verzeichnisgröße ermitteln
 
danke funktioniert.
hab da noch eine frage dazu , wie bekomme ich diesen jetzt noch durch eine beliebige zahl geteilt, z.B. 600 KB/s, ich möchte nämlich die zeit ausrechnen und diese dann in der Progressbar ablaufen lassen.
gruß ninja


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz