Arsip: Copy File Stream koq lama banget

 
user image
more 16 years ago

ivan

Hii Guys, Ada pertanyaan nih tentang copy file dengan Stream. Saya Mengkopi file dengan file hanya 500KB saja lama sekali bisa sampai 30 dtk. padahal kalau dengan perintah copyfile itu sangat cepat. Ataukah ada kesalahan dengan algoritma nya? Berikut algoritmanya:
procedure TForm1.CopyDataTo(dataawal, dataakhir: string);
var
  file1 , file2 : tfilestream;
  buff  : char;
  i: Integer;
begin
file1 :=tfilestream.Create(dataawal,fmopenread);
file2 := tfilestream.Create(dataakhir,fmopenwrite or fmcreate or fmsharedenywrite);
for i:= 0 to file1.Size-1 do
  begin
      file1.Read(buff,sizeof(buff));
      file2.Write(buff,sizeof(buff));
  end;
file1.Free;
file2.Free;
end;
Demikian Algoritmanya. Mohon bantuannya... :cry: THX sebelumnya
user image
more 16 years ago

simba

Sebelumnya, kalo memang pake CopyFile bisa lebih cepat, knp gak pake method tsb? Jika file yg akan dicopy berada dalam 1 mesin, tentu fungsi CopyFile adalah yg paling efektif krn itu memanggil fungsi OS. Tentu ada alasan untuk pake stream. ;) Dari snippet di atas, yg bikin lemot adalah perulangan dgn read and write dari source ke target sebesar buff (tipe char/byte). :D Class TFileStream punya method CopyFrom() untuk copy data dari stream lainnya. Coba pake itu, harusnya bisa lebih cepat krn tanpa perulangan. Ganti perulangan for..do dgn satu baris: file2.CopyFrom(file1, file1.Size);. HTH.
user image
more 16 years ago

cyber_hecker

nah.. ini dia jagoan buffer bufferan ama stream-streaman.. , ivan beruntung oom simba yang turun tangan langsung . klo diriku angkat tangan dan angkat kaki deh kalo udah mainan bufferan gitu.. tauk nya cuma wafer wafer an doang slurp....wekekeke....
user image
more 16 years ago

xerion

buff nya hanya char ( 1 byte :shock: ) ga heran lamaa :mrgreen: cara om simba saja ( jagoan buffer bufferan ama stream-streaman ) :mrgreen:
user image
more 16 years ago

ivan

Terima kasih atas bantuannya. Akan saya coba. Trus kalo saya pake komponent progressbar bagaimana cara menentukan position dari progressbar, karena kalau pake perulangan position progressbar gampang ditentukan, bagaimana kalo dengan cara: file2.CopyFrom(file1, file1.Size); untuk menentukan position progressbar nya? Mohon bantuannya lagi THX ada 1 pertanyaan lagi: dalam aplikasi ada komponen label1. Kondisi awal set property visible:= false kemudian saat copy file berlangsung set visible:= true; Pertanyaannya: ketika proses copy file label1 tersebut tidak muncul, bagaimana cara nya supaya muncul. Terimakasih..
user image
more 16 years ago

ivan

Busyeettt setelah saya coba dengan cara Om Simba sungguh dahsyat. Kuenceeeeenggg buanget. Tengkyuuu banget Mohon pencerahan dari pertanyaan sebelumnya. Terima kasih..
user image
more 16 years ago

simba

Kalo mau menampilkan progress bar saat proses copy berlangsung, kita harus mau menerima konsekuensi proses akan berlangsung lebih lama krn diribeti dgn tampilan visual. Tapi kalo memang tetep mau dilakukan, ada 2 solusi: - Akses file pake API CopyFileEx() yg udah menyediakan informasi progress untuk ditautkan dgn progress bar. Detil penggunaan CopyFileEx() silakan baca help. :D - Tetep pake stream tapi proses copy data gak langsung sekaligus seperti cara sebelumnya. Sebenarnya pake cara bung Ivan yg awal itu bisa kok. Masalahnya, bung Ivan kurang tepat menggunakan method Read dan Write dari class TFileStream. Supaya bisa dpt info progress tanpa terlalu mengorbankan kecepatan proses copy, gunakan ukuran buffer yg lebih besar, bukan 1 byte/char. :D Misalnya, copy per 64 kB atau berapa gitu lah. Silakan dicoba. ;) HTH.
user image
more 16 years ago

ivan

@ivan: ada 1 pertanyaan lagi: dalam aplikasi ada komponen label1. Kondisi awal set property visible:= false kemudian saat copy file berlangsung set visible:= true; Pertanyaannya: ketika proses copy file label1 tersebut tidak muncul, bagaimana cara nya supaya muncul.
Kesalahannya dimana yach??
user image
more 16 years ago

gust4m4n

mungkin di dalam loopingnya perlu di kasih Application.ProcessMessages;
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com