Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Grösse von Verzeichnissen bestimmen (https://www.delphipraxis.net/80116-groesse-von-verzeichnissen-bestimmen.html)

Ajin 3. Nov 2006 08:05


Grösse von Verzeichnissen bestimmen
 
Guten Morgen!

Ich versuche immernoch Verzeichnisse mit einer Progressbar zu kopieren. In diesem Sinne möchte ich die Grösse der zu kopierenden Verzeichnisse (inkl. unterordner) bestimmen. Delphi bringt für Dateioperationen iniges mit, aber bei Verzeihnissen siehts da meines wissens mau aus.

Laut Suchfunktion gabs nur einen Beitrag mit einer selbst gestrickten GetVerzeihnisGr Funktion welche aber nicht richtig funktioniert.

Man könnte ja alle Dateien zählen die sich in sämtlichen unterordnern befinden und die Summe aufaddieren. Gibts da nix eleganteres?

Wie bestimmt ihr die Grösse eine Verzeichnisses?

Luckie 3. Nov 2006 08:22

Re: Grösse von Verzeichnissen bestimmen
 
Da hatten wir doch erst. Entweder nimmst du die API-Funktion SHFileoperationSHFileoperation oder du suchst dir mit FindFirstFindFirst / FindNextFindNext alle Dateien und summierst die Dateigrößen.

Oder, so habe ich es mal gemacht, du zählst nur die Ordner (der ersten Ebene): http://www.michael-puff.de/dirindex....phi/Sonstiges/ -> MpuDriveTools.pas

Steve 3. Nov 2006 08:27

Re: Grösse von Verzeichnissen bestimmen
 
Zitat:

Zitat von Ajin
...In diesem Sinne möchte ich die Grösse der zu kopierenden Verzeichnisse (inkl. unterordner) bestimmen. ...

Hi,

eine (weitere) Möglichkeit wäre:

Delphi-Quellcode:
uses
  ComObj;

Function FolderSize(FolderName: STRING) : DWORD;
var
  fldr, fso : OleVariant;
begin
  fso   := CreateOleObject('Scripting.FileSystemObject');
  fldr  := fso.GetFolder(FolderName);
  result := fldr.size; // In Bytes
end;
Gruß
Stephan :dance:

Luckie 3. Nov 2006 08:56

Re: Grösse von Verzeichnissen bestimmen
 
Die Idee ist gut. Allerdings sollte man das in einem Thread auslagern, da es bei größeren Verzeichnissen etwas dauern kann. Desweiteren sollte der Rückgabewert Int64 sein, sonst bekommst du Probleme mit Ordern über 2GB.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.

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