Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ordnergröße ermitteln (https://www.delphipraxis.net/80017-ordnergroesse-ermitteln.html)

h0ppsen 1. Nov 2006 16:35


Ordnergröße ermitteln
 
Erstma: Hi @ all!!! :hello: :hello: :hello:

Nun gleich zu meiner Frage: Wie kann man von einem Ordner dessen Größe auslesen???

Ich dachte, dass es reicht aus einem TSerachRec einfach die Eigenschaft Size zu nehmen und fertig.

Für jede Hilfe schon jetzt großes Danke! :mrgreen: :mrgreen: :mrgreen:

ErazerZ 1. Nov 2006 16:40

Re: Ordnergröße ermitteln
 
den Ordner durchgehen und wenn searchrec.Attr and FILE_ATTRIBUTE_DIRECTORY = 0 dann in einer variable zusammenzählen
edit:
Delphi-Quellcode:
function GetFolderSize(Path: string): string;
var
  f: TSearchRec;
  tmp: Int64;
const
  sFormat = '%.2n MB';
begin
  tmp := 0;
  Path := IncludeTrailingPathDelimiter(Path);
  if DirectoryExists(path) then
  begin
    FindFirst(Path + '*.*', faAnyFile, f);
    repeat
      if (f.Attr and FILE_ATTRIBUTE_DIRECTORY = 0) then
        tmp := tmp + f.Size;
    until FindNext(f) <> 0;
    FindClose(f);
  end;
  Result := Format(sFormat, [(tmp / 1024) / 1024]);
end;

RWarnecke 1. Nov 2006 16:44

Re: Ordnergröße ermitteln
 
Schaue Dir mal diesen Link an. Dort wird gezeigt, wie die Verzeichnisgröße ermittelt werden kann.

marabu 1. Nov 2006 20:01

Re: Ordnergröße ermitteln
 
Vorsicht!

Der verlinkte Code enthält einen klassischen Fehler: config folder (z.B. .borland) werden übergangen. Darüberhinaus muss man sich bewusst sein, dass der tatsächlich belegte Plattenplatz mitunter deutlich umfangreicher als die ermittelte size ist.

Grüße vom marabu

Hawkeye219 1. Nov 2006 20:39

Re: Ordnergröße ermitteln
 
Ein weiteres Problem:

Bei Verzeichnissen mit mindestens 2 GByte Inhalt liefert die Funktion wegen des unzureichenden Ergebnistyps falsche Werte. Für Delphi 2006 reicht es aus, den Typ von Longint auf Int64 abzuändern, da Borland die Struktur TSearchRec angepaßt hat. In älteren Versionen werden Dateigrößen ab 2 GByte nicht richtig verarbeitet.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.

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