Hallo!!
Ich benutze folgenden, bekannten Code um ein Verzeichnis zu kopieren:
Code:
function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
fFlags := FOF_NoConfirmMkDir + FOF_NOCONFIRMATION;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir + #0)
end;
Result := (0 = ShFileOperation(fos));
end;
Nun habe ich das Problem, dass ich das kopierte Verzeichnis einfach nicht löschen kann, während mein Programm läuft! Ich kann zwar alle Dateien darin ohne Probleme löschen (alle Unterverzeichnisse sind also leer), aber die Routine zum Löschen schlägt jedesmal fehlt:
Code:
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));
end;
Auch mit RemoveDir() oder RMDir() keinen Erfolg.
Meine Frage ist also: Ist das kopierte Verzeichnis noch irgendwie geöffnet?? Sobald ich meine Anwendung nämlich beende, kann ich es mit den selben Routinen durch anderes Delphi-Prog problemlos löschen.
Wie kann ich dieses Verzeichnis "schließen"??