so ich hab das jetzt mal umgemodelt, also das selbe was ich mit streams gemacht hab auf untypisierte Dateien und Blockread/Blockwrite umgebaut.
Delphi-Quellcode:
var FInput,FOutput: File;
i, buffersize,transferred:integer;
buffer:array of Byte;
begin
buffersize:=strtoint(edit3.Text);
AssignFile(FInput,edit1.Text);
Reset(FInput,1);
AssignFile(FOutput,edit2.Text);
Rewrite(FOutput,1);
setlength(buffer,buffersize);
for i:=1 to floor(FileSize(FInput) / buffersize) do
begin
Blockread(FInput,buffer[0],buffersize,transferred);
Blockwrite(FOutput,buffer[0],buffersize,transferred);
Seek(FInput,i*buffersize);
//Status
Progressbar1.Position:= 100*i*buffersize div FileSize(FInput);
label2.caption:=inttostr(i*buffersize) +' / '+ inttostr(FileSize(FInput));
Application.ProcessMessages;
end;
Progressbar1.Position:=100;
label2.caption:=inttostr(FileSize(FInput)) +' / '+ inttostr(FileSize(FInput));
Das Ergebnis ist identsich. Statusbar läuft durch. Alle Befehle werden abgearbeitet, aber die Übertragung geht noch lange Zeit nach durchlauf der for Schleife weiter.
Mir fällt jetzt auch nix weiter mehr ein. Falls noch jemand eine Idee hat, her damit, ansonsten werd ich das Projekt begraben.