@bAlaRk
Um das mit einfachen Mitteln und ohne viel Aufwand zu beheben, mach doch einfach folgendes:
Immer wenn du das Verzeichnis scannst, suche den Dateinamen in einer
TStringList
.
- Ist der Dateiname dort nicht vorhanden, dann schreibe diesen dort hinein.
- Ist der Dateiname dort vorhanden, dann entferne diesen Eintrag und kopiere die Datei.
Wenn du jetzt alle 2 Minuten schaust, dann wird eine neue Datei beim ersten Lauf in die
TStringList
geschrieben, aber noch nicht kopiert.
Beim nächsten Lauf wird der Dateiname in der
TStringList
gefunden und folglich erst jetzt kopiert.
Nach 2 Minuten sollte der Upload der Datei per
FTP ja wohl erledigt sein und die Häufigkeit der Ausnahmen ist schon mal erheblich verringert.
Das Kopieren selber solltest du auch in einem
try .. except
Block erledigen.Die Exceptions werden davon gefangen dein Programm bleibt auch nicht hängen.
Delphi-Quellcode:
try
// hier der Code zum Kopieren der Datei
except
on E:
Exception do
begin
// hier könnte ein Code sein, um diese Fehlermeldung in einem Log zu speichern
end;
end;
Es ist natürlich nicht die beste Lösung (wegen Pollen) aber eine für dich leicht umsetzbare und darauf kommt es am Ende immer an
BTW: Es sollte für dein Programm sogar ausreichen, die
Exception mit dem
try .. except
zu fangen