Hallo zusammen,
ein Programm, das nunmehr ca. 3 Jahre einwandfrei funktioniert hat, stürzt jetzt reproduzierbar ab.
In einer Prozedur werden lokale Dateien auf den Server kopiert und lokal gelöscht.
Ziel sieht so aus:
\\Server\pfad\unterverzeichnis\datei_i.pdf
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:=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 ForceDirectories(zielpfad);
ziel:= zielpfad + ExtractFileName(files[i]);
ShowMessage('#');
ok:= CopyFile(PChar(files[i]), PChar(ziel), false);
if ok then DeleteFile(files[i]);
except
RaiseLastOSError;
end;
end;
finally
files.Free;
end;
end;
Die Schleife wird das erste mal korrekt durchlaufen (Datei wird korrekt kopiert und lokal gelöscht), beim zweiten mal immer Absturz,
und zwar genau bei der Anweisung nach ShowMessage('#');
except wird nicht durchlaufen.
Es sieht so aus als ob das nur bei .pdf-Dateien passiert, da an anderer Stelle mit ähnichem Code nicht pdf dateien problemlos verarbeitet werden.
Da sich an dem Gesamtsystem nichts verändert hat ausser Betriebssystem und Virenscanner Updates sollte es wohl daran liegen.
Der Virenscanner ist TrendMicro
Angenommen es liegt am Virenscanner (meine Vermutung, die aber erst morgen durch Abschalten überprüft werden kann) nun die Frage:
Was kann man tun, ausser den Virenscanner für .pdf zu deaktivieren?
(CopyFile durch TMemoryStream Load / Save zu ersetzten, hab ich probiert: bringt nichts, identisches Ergebnis)
(Ich gehe davon aus, dass man den Virenscanner nicht dauerhaft deaktivieren wird)