Wirklich sauber ist es so, wie es ist nicht, aber auch ein Scheitern von ForceDirectories und die daraus resultierenden Probleme dürften nicht dazu führen, dass sich ein Programm einfach sang- und klanglos verabschiedet.
Da muss irgendwo noch was anderes gewaltig schiefgehen, was aber so aus der Ferne nicht zu erkennen ist.
Du hast recht. Aber das Problem ist, daß man auf diese Weise nie das Problem finden wird.
Ich habe kein Delphi installiert, aber wie sähe es denn mit etwas in dieser Richtung hier aus?
Delphi-Quellcode:
function TJobServerForm.VerschiebeEntsprechendEndung(maske: String): Boolean;
var
files: TStrings;
i: Integer;
ziel, zielpfad: String;
begin
result := False;
files:= TStringList.Create;
GetFilesMatchInPath(LokalPdfDir, maske, files, false); // Rückgabewert?
try
for i:=0 to files.Count-1 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
begin
if not ForceDirectories(zielpfad) then
RaiseLastOSError;
end;
ziel:= zielpfad + ExtractFileName(files[i]);
if CopyFile(PChar(files[i]), PChar(ziel), false) then
begin
if not DeleteFile(files[i]) then
RaiseLastOSError;
result := True;
end;
except
RaiseLastOSError;
end;
end;
finally
files.Free;
end;
end;
Ich verstehe zwar noch immer nicht, wozu das "try ... except RaiseLastOSError; end;" gut sein soll, aber nen Grund wird es sicher haben.