Hallo!
Wie kann ich mit Delphi ein komplettes Verzeichnis mit allen Dateien und Unterordnern in ein anderes Verzeichnis kopieren?
Ich habe es wie folgt versucht, dies hat aber nicht funktioniert:
Delphi-Quellcode:
function CopyDirectory(SourceDirectory: string;
DestinationDirectory: string): boolean;
var
SHFileOpStruct: TSHFileOpStruct;
SourceBuffer, DestinationBuffer: array[0..255] of char;
res: integer;
begin
try
if not DirectoryExists(SourceDirectory) then
begin
Result := False;
exit;
end;
Fillchar(SHFileOpStruct, sizeof(SHFileOpStruct), 0);
FillChar(SourceBuffer, sizeof(SourceBuffer), 0);
FillChar(DestinationBuffer, sizeof(DestinationBuffer), 0);
StrPCopy(SourceBuffer, SourceDirectory);
StrPCopy(DestinationBuffer, DestinationDirectory);
with SHFileOpStruct do
begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := @SourceBuffer;
pTo := @DestinationBuffer;
fFlags := FOF_ALLOWUNDO;
hNameMappings := nil;
lpszProgressTitle := nil;
fFlags := fFlags or FOF_NOCONFIRMATION;
fFlags := fFlags or FOF_SILENT;
fFlags := fFlags or FOF_SIMPLEPROGRESS;
fFlags := fFlags or FOF_NOCONFIRMMKDIR;
end;
res := SHFileOperation(SHFileOpStruct);
Result := (res = 0);
if not Result then
ShowMessage(SysErrorMessage(GetLastError));
except
Result := False;
end;
end;
Der Aufruf von CopyDirectory('C:\test\', 'D:\Ziel\') liefert zwar das Ergebnis 2 = Vorgang erfolgreich ausgeführt, aber es werden keine Dateien order Order kopiert... Was mache ich falsch?
Gibt es ggf. einen einfacheren Weg einen Ordner von A nach B zu kopieren?
Das ganze soll ohne Fortschrittsbalken, etc. ablaufen.
Besten Dank
Ares