Entwickler-Ecke

Dateizugriff - Progress bei einem Verzeichnisdurchlauf


Tweafis - Do 19.06.03 11:42
Titel: Progress bei einem Verzeichnisdurchlauf
Sorry für den Themanamen, aber mir fiel nix besseres ein. Ich möchte während ich ein Verzeichnis durchlaufe und die Dateien verarbeite (kopiere bzw. verlinke) eine Progressbar aktualisieren die den aktuelen Stand anzeigt. Ich möchte aber nur im Notfall nach Dateianzahl gehen, da die Dateien unterschiedlich groß sind. Lieber wäre mir wenn ich erst die gesamtgröße der Dateien im Verzeichnis auslese und dann den Prozentsatz der schon verarbeiteten Dateiengröße an dem insgesamten ausrechne und anzeige. Hat vielleicht jemand eine bessere idee?

Habe es mit der Funktion

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function GetDirectorySize(Dir: string; Ext: string): Integer;
var SR: TSearchRec;

begin
  result := 0;

  if FindFirst(Dir+'*.'+Ext, faAnyFile - faDirectory, SR) = 0 then begin
    result := result + SR.Size;
    while (FindNext(SR) = 0do
      result := result + SR.Size;
  end;
end;
probiert, gibt aber immer 0 zurück.


Delete - Do 19.06.03 18:31

Ich vermute mal, du rufst die Funktion so auf

Delphi-Quelltext
1:
GetDirectorySize('c:\Ordnername','txt');                    

Das kann nichts werden, weil dann der String

Quelltext
1:
c:\Ordnername*.txt                    

entsteht. Du musst also nach dem Ordnernamen noch einen Backslash angeben.

Delphi-Quelltext
1:
GetDirectorySize('c:\Ordnername\','txt');                    

Oder du ergänzt diesen Backslash in deiner Funktion vor dem Sternchen. Dann geht´s.

Aber, ich vermisse ohnehin das FindClose.
Das solltest du unbedingt noch ergänzen.

Gruß.


Tweafis - Do 19.06.03 18:34

THX, hab FindClose ergänzt und es lag an dem was du sagtest. Hätte vielleicth ein wenig debuggen sollen ;)

THXXXXX