Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Datei mit Fortschrittsanzeige Kopieren

  Alt 20. Dez 2005, 18: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
  Mit Zitat antworten Zitat