Nimm mal Mutzes Vorschlag.
Mit Deiner Timerroutine komme ich nicht klar. Der Timer hat generell eine Schwäche. Wenn er usgeführt wird, und die Procedure nicht fertig mit kopieren ist, wird der Timer, ohne Rücksicht auf die ausgeführte Proceduren/Funktionen wieder nach der abgelaufenen Zeit von vorne beginnen. Wenn dann die Aktionen noch im Gange sind, wie z. B. kopieren, bekommst Du Probleme.
Lösung:
In der Timer Routine am Anfang:
Timer1.Enabled:=False;
und am Ende der Timer Routine:
Timer1.Enabled:=True;
Wirkt Wunder! Und wenn Du noch ein IsFileInUse(Path) verwendest, bist Du auf der sicheren Seite:
Delphi-Quellcode:
// Natürlich ist Timer1.enabled:=False; bei Dir in der Procedure zuvor wie oben gesetzt!
if IsFileInUse(Path) then
begin
Timer1.enabled:=True; //Sonst bleibt der Timer aus...
Exit; //Raus aus der Procedur/Function
end;
Das ist die Grundlage, dass Dein Timer auch funktionert.
Und? Klappts?