Arsip: Copy File Stream koq lama banget

more 17 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
more 17 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.

more 17 years ago
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....
cyber_hecker





more 17 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:

more 17 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..

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

more 17 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.

more 17 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??
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- tool utk baca & cetak struktur database
by shindo in Hal umum tentang Pascal Indonesia more 18 years ago - E-Book Here!
by ZeAL in OOT more 19 years ago - Tips : Menampilkan Dialog Koneksi
by cyber_hecker in Tip n Trik Pemrograman more 19 years ago - Nanya : Error 'Empty Set'
by tox2wow in MySQL more 19 years ago - LOCK APLIKASI
by elva_ivana in Lain-lain more 16 years ago - Format String
by galih in Tip n Trik Pemrograman more 17 years ago - Menu pake TreeView di deplhi, Supaya Dinamis gimana ?
by palapetir in Tip n Trik Pemrograman more 19 years ago - Adu Cepat Koneksi Internet
by deLogic in OOT more 15 years ago - Pengurangan tgl
by p2bf in Tip n Trik Pemrograman more 17 years ago - Pascal Server Page, sebuah alternatif
by Anonymous in onLinux more 19 years ago