Kopiowanie

0

Witam, zarzuce najpierw kodem:

var s:string;plik,plik2:TFileStream;
begin
try
  plik:=TFileStream.create(path,fmopenread);
  plik2:=TFileStream.create(path2,fmopenreadwrite or fmCreate);
  setlength(s,1024);
  repeat
    if plik.Size-plik.Position<1024 then
      setlength(s,plik.Size-plik.Position); // tu zwonienie jest znikome, poniewaz wykonuje sie to tylko raz
    plik.Read(pchar(s)^,length(s));
    plik2.Write(pchar(s)^,length(s));
    form1.gauge1.Progress:=plik.Position;
    form1.gauge1.Refresh;
    form1.label1.caption:=inttostr(plik.position)+' of '+inttostr(plik.size)+' bytes     transferred';
    form1.label1.refresh;
  until plik.Position>=plik.Size;
except
showmessage('Error');
plik.destroy;
plik2.destroy;
exit;
end;
plik.Destroy;
plik2.Destroy;
messagebox(form1.handle,'Done','Done',MB_OK);
end;

A teraz pytanie - jak mozna przyspieszyc proces kopiowania?? - bo dziala mi to dosyc wolno.

0

Milka - no way- kopiuje to z sieci lokalnej i pisze program ktory kopiuje to w ten sposob, dzieki czemu moge pozniej kontynuowac kopiowanie pliku. A tam jak mi przerwie (albo sam przerwe) to musze pozniej od nowa zaczyac. a pliki maja ponad 500 MB, wiec troche to trwa na 11Mb/s

0

wystarczy zwiększyć bufor z jednego kilobajta tak jak masz tam napisane do kilkunastu kilobajtów.

0

a nie musisz pisać do tego programu. Ściągnij z netu TotalCopy można kontynuować kopiowanie albo samo się wznawia jak się np komp zawiesi.

0

juz dziala szybko, zwiekszylem bufor do 128 KB. Dzieki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1