Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verzeichnisstruktur kopieren (https://www.delphipraxis.net/18444-verzeichnisstruktur-kopieren.html)

Killer 18. Mär 2004 19:08


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 :)

sakura 18. Mär 2004 19:24

Re: Verzeichnisstruktur kopieren
 
Schau mal in die CodeLibrary, da gibt es einen Eintrag zum Thema Win32-Dateioperationen
Dateioperationen SHFileOperationDateioperationen SHFileOperation

...:cat:...

Killer 18. Mär 2004 19:36

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...

xineohp 18. Mär 2004 21:46

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:
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;
Wie sich das mit dem Prozessbar für die einzelne Datei machen lässt weiß ich jetzt auf Anhieb auch nicht..

Killer 18. Mär 2004 22:02

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