Der stream-read-error resultiert aus einem unterschiedlichen Verhalten der Methoden CopyFrom() und Read(). Während Read() kein Problem damit hat, dass mehr Bytes angefordert werden als noch vorhanden sind, wirft CopyFrom() eine
Exception, wenn man nicht byte-genau liest.
Diese Änderung sollte das Problem beheben:
Delphi-Quellcode:
...
FileProgressBar.Position := 0;
// fehlte in meinem ersten Beitrag
remainingBytes := fsSource.Size;
repeat
bytes := fsTarget.CopyFrom(fsSource, Min(chunkSize, remainingBytes));
Dec(remainingBytes, bytes);
FileProgressBar.Position := FileProgressBar.Position + bytes;
Application.ProcessMessages;
until remainingBytes = 0;
...
marabu