Einzelnen Beitrag anzeigen

pstruh
(Gast)

n/a Beiträge
 
#2

Re: Mit BlockRead() Datei kopieren

  Alt 11. Sep 2007, 22:43
Ohne auf deinen Code einzugehen, ich habe da folgende Routine:
Delphi-Quellcode:
procedure FastCopy_All(SouName,DesName:String;DelSou:Boolean);
const BufferSize = 32768;
var Sou,Des : file;
      Buffer : Array[1..BufferSize] of Byte;
      NumRead,
      NumSave : Integer;
begin
 CopiedBytes:=0;

 AssignFile(Sou,SouName); {$I-} reset(Sou,1); {$I+}
 FastCopyResult:=IOresult;
 if FastCopyResult<>0 then exit;

 AssignFile(Des,DesName); {$I-} rewrite(Des,1); {$I+}
 FastCopyResult:=IOresult;
 if FastCopyResult<>0 then exit;

 repeat
  BlockRead (Sou,Buffer,SizeOf(Buffer),NumRead);
  BlockWrite(Des,Buffer,NumRead, NumSave);
  inc(CopiedBytes,NumSave);
  Application.ProcessMessages;
  until (NumRead=0) or (NumSave<>NumRead);

 CloseFile(Sou);
 CloseFile(Des);

 if DelSou then erase(Sou);
end;
Der Procedurkopf sollte eigentlich alles erklären. Die globale Variable FastCopyResult ist global deklariert, das würde ich heute anders machen ...
  Mit Zitat antworten Zitat