Beim Kopieren von Dateien muss man auf die Share-Attribute achten.
Du behauptest zwar, die Dateien wären alle geschlossen, aber das ist noch kein Beweis.
Beim Kopieren solltest du eventuelle Fehler mit protokollieren!!
Deshalb:
Delphi-Quellcode:
ThreadCopy =
class(TThread)
private
...
FErrors :
string;
// speichert die Kopierfehler
public
...
property Errors :
string read FErrors;
end;
function ThreadCopy.CopyFile(
const Source, Dest:
String): Boolean;
var F, T: TFileStream;
begin
Result := false;
try
try
F := TFileStream.Create(Source, fmOpenRead
and fmShareDenyNone);
T := TFileStream.Create(Dest, fmCreate);
T.CopyFrom(F, 0);
Result := true;
finally
F.Destroy;
T.Destroy;
end;
except
on E:
Exception do
begin
// wir merken uns die Fehlermeldung aus der Exception
// und die Dateinamen, die kopiert werden sollten !!!
FErrors := FErrors+Source+'
->'+Dest+'
: '+E.
Message+#13#10;
end;
end;
end;