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 Kopieren mehrerer Verzeichnisse mit SHFileOperation (https://www.delphipraxis.net/50106-kopieren-mehrerer-verzeichnisse-mit-shfileoperation.html)

BeBored 20. Jul 2005 18:44


Kopieren mehrerer Verzeichnisse mit SHFileOperation
 
Hallo Delphi-Praxis Mitglieder ich treibe mich hier schon eine ganze weile im Forum herum und habe nun ein Problem bei dem ich irgendwie nicht auf die Lösung komme.

Ich bin ziemlicher Delphi-Neuling also nichts großartiges erwarten...

Mein Problem:

Ich schreibe ein Backup Programm (sehr einfach gehalten für einen älteren Herren) bei dem ich mehrere Verzeichnisse in ein Verzeichniss kopieren will. Kein Kompression oder ähnliches nötig.
Ich benutze eine Funktion die ich im Internet gefunden habe

Delphi-Quellcode:
function CopyDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_COPY;
    fFlags := FOF_FILESONLY;
    pFrom := PChar(fromDir + #0);
    pTo   := PChar(toDir)
  end;
  Result := (0 = ShFileOperation(fos));
end;
Ich rufe die Funktion so auf:

Delphi-Quellcode:
  if CopyDir(Quelle, Ziel + '\') = True then
  MessageDlg('Daten gesichert!', mtInformation, [mbOK], 0);
Quelle und Ziel sind String Variablen.
Geht aber nur mit einem Verzeichniss und so nützt mir das nicht viel.
Ich habe das Programm so weit das man Verzeichniss auswählen kann, diese in einer Stringlist gespeichert werden und in
einer Datei.

Wie kann ich die einzelnen Verzeichnisse die in der StrinList stehen in einen einzelnen Ordner sichern?
Ist vielleicht garnicht mal so schwer, aber ich komme nicht drauf :-(

Danke schonmal im vorraus

Matthias

SirThornberry 20. Jul 2005 18:47

Re: Kopieren mehrerer Verzeichnisse mit SHFileOperation
 
du müsstest das ganze für jeden Eintrag in deiner Stringlist machen.
Dabei musst du aber folgendes bedenken:
angenommen in deiner Stringlist befindet sich
c:\ordner1\test
c:\ordner2\test

und du kopierst das ganze nach
c:\ordner3

dann überschreibt das "Test"-Verzeichnis aus Ordner2 das gesicherte von Ordner1

BeBored 20. Jul 2005 18:53

Re: Kopieren mehrerer Verzeichnisse mit SHFileOperation
 
Hallo ging ja echt fix :-)

ja das habe ich mir gedacht das ich das für jeden Eintrag machen muss, nur wie da komme ich nicht drauf...

Mit den Ordnern ist kein Problem da die Unterordner immer anders heißen.

Grüsse

Matthias

SirThornberry 20. Jul 2005 19:15

Re: Kopieren mehrerer Verzeichnisse mit SHFileOperation
 
hmm, dann verstehe ich das problem nicht ganz, was ist dir bei dem ganzen unklar? Du hast eine Stringlist und weißt das du da alle items durchgehen musst. Die funktion um jeden Ordner einzeln zu kopieren hast du auch.
Bei was genau brauchst du da jetzt noch Hilfe? (ich hoffe das klingt nicht irgendwie böse)

MathiasSimmack 20. Jul 2005 19:21

Re: Kopieren mehrerer Verzeichnisse mit SHFileOperation
 
Beim Kopieren von Dateien kannst du mehrere angeben, indem du sie durch #0 trennst. Darum endet der ganze String ja auch mit #0#0, weil das das Abschlusszeichen für die Funktion ist. Ich würde das gleiche mal mit Ordnern probieren.

BeBored 20. Jul 2005 19:57

Re: Kopieren mehrerer Verzeichnisse mit SHFileOperation
 
Ich habe es jetzt so gemacht und geht auch:

Delphi-Quellcode:
for index := 0 to Form3.strl_Quellen.Items.Count-1 do CopyDir(Form3.strl_Quellen.Items[index], Ziel);
Vielen dank noch einmal für eure schnellen Antworten.

Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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