Code:
Function Copyfile(Name, Outfile: String): Boolean;
var
source, target: TFilestream;
begin
source := TFilestream.create( Name,
fmOpenRead or
fmShareDenyNone );
try
target := TFilestream.Create( Outfile,
fmCreate );
try
target.copyfrom(source, 0);
finally
target.free;
end;
finally
source.free;
end;
Result := True;
end;
deze code werkt bij mij uitstekend. En anders deze code ( die erg veel lijkt op die van de link van Mark), waar je ook nog eens een Application.processmessages en als het moet een pointer voor een progressbar bij kunt plaatsen in de variable:
Code:
Function Copyfile(Fromfile, Tofile: String): Boolean;
Var
Ffile, Tfile: File;
mem: Pointer;
Size, Wrote: Dword;
Partsize: Word;
Const
Transmax = 500;
begin
Assignfile(Ffile, Fromfile);
Reset(FFile, 1);
Size := Filesize( Ffile );
Wrote := 0;
Assignfile(Tfile, Tofile);
Rewrite(TFile, 1);
Repeat
Partsize := Size - Wrote;
If Partsize > Transmax then
Partsize := Transmax;
Getmem(Mem, Partsize);
Blockread(Ffile, Mem^, Partsize);
Blockwrite(Tfile, Mem^, Partsize);
Wrote := Wrote + Partsize;
Freemem(Mem, Partsize);
Until
Wrote = Size;
Closefile(Tfile);
Closefile(Ffile);
end;
en het mooie van de laatste code is ook weer dat je de snelheid kunt opvoeren
Bookmarks