Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
Delphi 2005 Personal
|
Re: Datei mit Fortschrittsanzeige Kopieren
20. Dez 2005, 19:24
Datei kopieren geht so:
Delphi-Quellcode:
var
f,t:file of byte;
buf:array[1..4096] of byte;
read:integer;
begin
assignfile(f,from); //Datei from zuweisen
assignfile(t,to); //Datei to zuweisen
reset(f); //Datei from öffnen
rewrite(t); //Datei to erstellen/überschreiben
while not eof(f) do begin //solange die Datei from nicht am Ende ist
blockread(f,buf,length(buf),read); //lese aus Datei from in Variable buffer, und zwar länge(buffer) Bytes. Anzahl der tatsächlich gelesenen Bytes in read.
blockwrite(t,buf,read); //Schreibe in Datei to aus Buffer und zwar [anzahl der gelesenen bytes] bytes.
end;
closefile(f); //Schliesse Dateien
closefile(t);
end;
jetzt kannst du ja mit filesize(f) die soll-Größe von f ermitteln.
folglich kannst du mit [filesize(t) {bereits geschriebene Bytes } / filesize(f) {Anzahl zu schreibender Dateien}] den Prozentsatz berechnen.
Mit Fortschrittsaktualisierung sieht die Funktion also so aus:
Delphi-Quellcode:
var
f,t:file of byte;
buf:array[1..4096] of byte;
read:integer;
begin
assignfile(f,from);
assignfile(t,to);
reset(f);
rewrite(t);
while not eof(f) do begin
blockread(f,buf,length(buf),read);
blockwrite(t,buf,read);
progressbar1.progress:=round(100*filesize(t)/filesize(f));
application.processmessages; //Bildschirm aktualisieren bzw. Buttonklicks ausführen etc.
end;
closefile(f);
closefile(t);
end;
Michael Enßlin Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
|
|
Zitat
|