Zitat von
Luckie:
Das ist doch eine Funktion. Wenn diese zurückkehrt, ist der Kopiervorgang beendet.
Das ist leider so nicht ganz richtig oder ich mache was falsch. Entweder startet die Fkt. einen eigenen Thread oder sonstwas. Sie kehrt jedenfalls eher zurück.
Ich habe folgendes getestet:
Delphi-Quellcode:
.
.
.
.
.
.
[b]if (copydirectory(sourceDir, destDir)) then
delDir(destDir);[/b]
.
.
.
// --------------------------------------------------------------------------------------------
// Löschen eines Verzeichnisses
//
function DelDir(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
// --------------------------------------------------------------------------------------------
// Kopieren eines Verzeichnisses
//
function CopyDirectory(sourceDir: string, destinationDir: string): boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
fos.wFunc := FO_COPY;
fos.fFlags := FOF_SIMPLEPROGRESS OR FOF_NOCONFIRMATION;
fos.pFrom := PChar(sourceDir + #0);
fos.pTo := PChar(destinationDir)
Result := (0 = ShFileOperation(fos));
end;
end;
Das Löschen geht eher los, nachdem alles fertig ist, sind auch noch Dateien im Ordner.