![]() |
Verzeichnisstruktur kopieren
Hallo ich hab folgendes Problem:
Ich muss ein Backupprogramm schreiben, das in meiner Firma zum Einsatz kommen wird, und zwar soll es einige Ordner (ziemlich viele) von einem Server auf den anderen Server kopieren (im Gesamten an die 32 GByte Daten. Nun könnte ichs natürlich so machen und jeden Ordner einzeln per Schleife durchlaufen und jede Datei einzeln kopieren, aber geht das nicht besser? Ich möchte auch 2 ProgressBars dabei haben damit man weiß wie weit das Proggie schon ist, eine davon verwende ich für den Gesamtstatus, was ja ziemlich einfach iss. Die 2te soll für die jeweilige Datei sein...irgendwie hab ich das Gefühl das wird nich einfach :) |
Re: Verzeichnisstruktur kopieren
Schau mal in die CodeLibrary, da gibt es einen Eintrag zum Thema Win32-Dateioperationen
![]() ...:cat:... |
Re: Verzeichnisstruktur kopieren
Danke aber soweit ich weiß, kann man mit diesem SHFileOperation nur den öden Win-Kopierdialog anzeigen oder? Ich möchte aber ne Dialogform, die den Status anzeigt...
|
Re: Verzeichnisstruktur kopieren
moin,
wie groß sind denn die einzelnen Dateien? d.h. sind es viele kleine oder wenige große oder gemischt? Wenn du den gesamt Status errechnen willst würde ich einfach erst alle Dateien suchen und auflisten und dann nacheinander abarbeiten/kopieren. Zum durchsuchen würd ich dann so was hier verwenden:
Delphi-Quellcode:
Wie sich das mit dem Prozessbar für die einzelne Datei machen lässt weiß ich jetzt auf Anhieb auch nicht..
procedure TForm1.searchFiles(start: String);
var srResult: TSearchRec; begin application.ProcessMessages; If Stop then exit; if FindFirst(start+'*.*',faAnyFile,srResult)=0 Then begin while (FindNext(srResult)=0) Do begin Application.processMessages; if (srResult.Attr=faDirectory) and (srResult.name<>'.') and (srResult.name<>'..') Then begin // Falls es sich um ein Verzeichnis handelt, rek. aufrufen searchFiles(start+srResult.name+'\'); end else begin // hier kannst Du dann die Dateien auslesen ... if (srResult.name<>'.')and (srResult.name<>'..') Then begin with StringGrid1 do // statt dem Stringgrid halt ne Stringlist oder so verwenden begin cells[0,counter]:=srResult.name; // dateiname cells[1,counter]:=inttostr(srResult.Size); // dateigröße cells[2,counter]:=copy(start,length(edit1.Text)+1,100); // Pfad (relativ zum Suchverzeichnis) rowcount:=rowcount+1; end; inc(counter); end; end; end; FindClose(srResult); end else begin ShowMessage('Keine Dateien vorhanden'); end; end; |
Re: Verzeichnisstruktur kopieren
Naja kommt auf den Datentyp draufan, sind kleine dabei wie zb. Word Dokumente und ähnliches aber auch große (SQL-Dumps mit Dateigröße > 1.5GB)!
Inzwischen hab ich mich mal bissl bei torry umgesehn und da recht gute VCLs gefunden. Iss zwar nicht das gelbe vom Ei, jedoch kann ich mir dadurch viel Zeit und Arbeit sparen. Trotzdem vielen Dank!! :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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