Befremdlich das Ganze.
Es gibt auch noch
function MoveFile(lpExistingFileName, lpNewFileName: PChar): BOOL;
Wäre das mal eine Testalternative?
Dadurch könnte die Kombination von CopyFile und DeleteFile (eventuell) entfallen.
Wo hast Du ShowMessage bzw. Sleep(2000) hingemacht?
Zwischen CopyFile und DeleteFile?
Weiß nicht, wie CopyFile arbeitet. Läuft das Kopieren im Hintergrund oder wartet das Programm, bis CopyFile fertig ist und löscht erst dann mit DeleteFile?
Eventuell trennst Du mal CopyFile und DeleteFile.
Aus der momentanen Routine DeleteFile rausnehmen und erst am Ende in 'ner eigenen Schleife aufrufen?
Delphi-Quellcode:
procedure TJobServerForm.VerschiebePdf;
var
files: TStrings;
i:integer;
ziel, zielpfad: string;
ok: boolean;
begin
files := TStringList.Create;
GetFilesMatchInPath(LokalPdfDir, '*.pdf', files, false);
try
for i := files.Count - 1 DownTo 0 do begin
try
memo.Lines.Add(IntToStr(i+1) + '/' + IntToStr(files.Count)+ ' ' + files[i]);
zielpfad: = WithBackSlash(PdfDir) + ExportSubDirFromFileName(files[i]);
if not DirectoryExists(zielpfad) then ForceDirectories(zielpfad);
ziel := zielpfad + ExtractFileName(files[i]);
ok := CopyFile(PChar(files[i]), PChar(ziel), false);
except
RaiseLastOSError;
end;
end;
for i := files.Count - 1 DownTo 0 do begin
try
zielpfad := WithBackSlash(PdfDir) + ExportSubDirFromFileName(files[i]);
ziel := zielpfad + ExtractFileName(files[i]);
if FileExists(Ziel) then files.Delete(i);
except
RaiseLastOSError;
end;
end;
If files.Count > 0 then begin
ShowMessage('Es konnten nicht alle Dateien kopiert und gelöscht werden!' + #13#13 + Files.Text);
end;
finally
files.Free;
end;
end;