Három megoldás: Az első File Stram-et használ: Procedure FileCopy( Const sourcefilename, targetfilename: String ); Var S, T: TFileStream; Begin S := TFileStream.Create( sourcefilename, fmOpenRead ); try T := TFileStream.Create( targetfilename,fmOpenWrite or fmCreate ); try T.CopyFrom(S, S.Size ) ; finally T.Free; end; finally S.Free; end; End; A második memóriablokkokat olvas és ír. procedure FileCopy(const FromFile, ToFile: string); var FromF, ToF: file; NumRead, NumWritten: Word; Buf: array[1..2048] of Char; begin AssignFile(FromF, FromFile); Reset(FromF, 1); { Rekord nagysága = 1 } AssignFile(ToF, ToFile); { Megnyitja a kimeneti fájlt } Rewrite(ToF, 1); { Rekord nagysága = 1 } repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); until (NumRead = 0) or (NumWritten <> NumRead); CloseFile(FromF); CloseFile(ToF); end; A harmadik pedig az LZCopy-t használja uses LZExpand; ... procedure CopyFile(FromFileName, ToFileName: string); var FromFile, ToFile: File; begin AssignFile(FromFile, FromFileName); {Assign FromFile to FromFileName} AssignFile(ToFile, ToFileName); {Assign ToFile to ToFileName} Reset(FromFile); {Open file for input } try Rewrite(ToFile); { Create file for output } try { ha negatív érték érkezik vissza a fájl másolásakor } { elindítja a kivételkezelőt } if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0 then raise EInOutError.Create('Error using LZCopy') finally CloseFile(ToFile); { Bezárja a ToFile-t } end; finally CloseFile(FromFile); { Bezárja a FromFile-t } end; end;