Teknik Mengakali..........
hahahahahaha pasti kalian pada penasaran khan ...? bagaimana cara membuat tera copy..... sendiri... sabar-sabar ntar saya beritahu kok......... tapi......................
Sebelum itu , saya akan menjelaskan sedikit alur kerja program ini.Ketika user menekan tombol copy , maka akan tampil open dialog yang berfungsi mencari file yang akan di copy , setelah terpilih maka akan muncul save dialog dimana kita akan menyimpan file yang telah terpilih.Lalu proses pengkopian pun terjadi dengan di tampilkannya sisa waktu copy file serta posisi progress bar sebagai acuan proses copy.Ngerti !? Tentu saja enggak !! haha.Okey deh , kita praktekan saja.Tambahkan 1 buah TButton , 2 TLabel , 1 buah TProgressBar , 1 buah TOpenDialog dan 1 buah TSaveDialog.Jika sudah , susun component-component tersebut sesuai gambar berikut
Jika
sudah , sekarang saatnya untuk koding !! Pertama , kita akan membuat
tampilan awal ketika aplikasi di jalankan.Yaitu tampilan label1 menjadi
kosong , dan progress position di 0.Maka dari itu , kita akan membuat
procedure dengan nama , procedure kondisiAwal.Ketikan kode berikut
setelah {$R *.dfm}
- procedure kondisiAwal;
- begin
- with Form1 do
- begin
- Label1.Caption:='';
- ProgressBar1.Position:=0;
- end;
- end;
Panggil procedure tersebut pada Form1 event onShow.Ketikan kode berikut
- procedure TForm1.FormShow(Sender: TObject);
- begin
- kondisiAwal;
- end;
Nah
, selanjutnya kita akan membuat procedure copyFile.Yang tentu saja
berfungsi untuk mengkopi file XD.Ketikan kode berikut setelah procedure
kondisAwal.
- procedure copyFile(sumber, tujuan: string);
- var
- dariFile, keFile: file of byte;
- Buffer: array[0..4096] of char;
- NumRead: integer;
- ukuranFile: longint;
- t1, t2: DWORD;
- maksimal: integer;
- begin
- with Form1 do
- begin
- AssignFile(dariFile, sumber);
- reset(dariFile);
- AssignFile(keFile, tujuan);
- rewrite(keFile);
- ukuranFile := FileSize(dariFile);
- with Progressbar1 do
- begin
- Min := 0;
- Max := ukuranFile;
- t1 := GetTickCount;
- maksimal := Max div 4096;
- while ukuranFile > 0 do
- begin
- BlockRead(dariFile, Buffer[0], SizeOf(Buffer), NumRead);
- ukuranFile := ukuranFile - NumRead;
- BlockWrite(keFile, Buffer[0], NumRead);
- t2 := GetTickCount;
- Min := Min + 1;
- // menampilkan waktu di label1
- label1.Caption := FormatFloat('0.00', ((t2 - t1) / min * maksimal - t2 + t1) / 100)+' detik';
- Application.ProcessMessages;
- Position := Position + NumRead;
- end;
- CloseFile(dariFile);
- CloseFile(keFile);
- end;
- end;
- end;
Procedure
tersebut berfungsi menggandakan file dan menghitung sisa waktu transfer
file.Selanjutnya , double klik button1 , dan ketikan kode berikut.
- procedure TForm1.Button1Click(Sender: TObject);
- var sumber , tujuan:String;
- begin
- if OpenDialog1.Execute then //jika file terpilih
- begin
- sumber:=OpenDialog1.FileName;
- SaveDialog1.FileName:=sumber;
- if SaveDialog1.Execute then // jika tujuan terpilih
- begin
- tujuan:=SaveDialog1.FileName;
- copyFile(sumber,tujuan);//procedure copyFile dipanggil
- ShowMessage('Proses Copy Selesai');
- kondisiAwal;
- end;
- end;
Taraaaa !! Beres deh.Jalankan program anda lalu klik Button1.Pilih file yang akan di copy lalu pilih lokasi tujuan copy.Usahakan pilih file yang agak besar sekitar 20 Mb , agar terlihat ketika progress bar bekerja , dan sisa waktu copy di tampilkan.
No comments:
Post a Comment