Delphi for delphier

Thread – Membuat thread sederhana

Tingkatan Pemula
   
Kategori System
   
Sub Kategori Thread
   
Judul Membuat thread sederhana
   
Oleh
eko-indriyawan-png.png   Nama Eko Indriyawan
Domisili Surabaya – Darmo Satelit
Delphi Delphi 2007 for Win32
YM eko_elits
Email eko_elits@yahoo.com
Telp 031 – 605 384 36
   
Referensi by Eko Indriyawan
   
Tujuan
Mengajarkan kepada Delphier untuk membuat thread sederhana.
   
Overview
Pembahasan pada artikel ini masih sederhana, sehingga masih banyak kekurangan. Namun paling tidak dari contoh dan pembahasan yang diberikan sudah bisa sedikit memberikan gambaran kepada delphier untuk membuat thread sederhana.
Artikel ini sangatlah menarik, kenapa menarik? karena dari contoh program ini, anda diberikan wawasan tentang menghandle beberapa proses tanpa harus menunggu proses itu selesai. Fungsi thread disini sangatlah bermanfaat, karena selama proses eksekusi prosedur, aplikasi masih bisa dioperasikan.
Diharapkan dengan contoh yang sederhana ini mampu memberikan inspirasi kepada Delphier dalam membuat program aplikasi yang lebih stabil.
   
Petunjuk :
Silahkan anda ikuti langkah – langkah berikut ini dengan pelan – pelan agar bisa berjalan dengan lancar sesuai dengan petunjuk yang sudah diberikan.
   
Langkah 1
   
Langkah 2
Tambahkan beberapa object kedalam Form
   
  Button1: TButton;
Button2: TButton;
Bevel1: TBevel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
ProgressBar1: TProgressBar;
ProgressBar2: TProgressBar;
ProgressBar3: TProgressBar;
ProgressBar4: TProgressBar;
ProgressBar5: TProgressBar;
ProgressBar6: TProgressBar;
   
Langkah 3
Atur desainnya seperti berikut ditampilkan pada gambar form dibawah ini
   
 
pemulasystemthread0001.jpg
   
Langkah 4
Silahkan anda deklarasikan object thread TCounter. Untuk lebih jelasnya silahkan anda lihat potongan kode program dibawah ini.
   
 
TCounter = class(TThread)
private
DataOutput : TProgressBar;
Max : Integer;
protected
procedure Execute; override;
public
constructor Counter(var OutPut : TProgressBar; Batas : Integer);
end;

   
Langkah 5
Tuliskan kode program pada prosedur Execute. Untuk lebih jelasnya silahkan anda lihat potongan kode program dibawah ini.
   
 
procedure TCounter.Execute;
// deklarasikan variabel
var
indek : Integer;
begin
// Set nilai maksimal dari progresbar
DataOutput.Max := Max;
for indek := 1 to Max do
begin
// Memberikan status posisi progressbar
DataOutput.Position := indek;
// tahan thread agar tidak terlalu cepatSleep(100);
end;
end;
   
Langkah 6
Tuliskan kode program pada constructor Counter. Untuk lebih jelasnya silahkan lihat potongan kode program dibawah ini.
   
 
constructor TCounter.Counter(var OutPut : TProgressBar; Batas : Integer);
begin
// buat object temporary untuk progressbar
DataOutput := TProgressBar.Create(nil);
DataOutput := OutPut;
// assign nilai batas maksimal progressbar
Max := Batas;
Inherited Create(False);
end;
   
Langkah 7
Silahkan anda klik 2x tombol Proses. Setelah itu anda lanjutkan dengan menuliskan kode program didalam event OnTimerseperti terlihat pada potongan kode program dibawah ini.
   
 
procedure TForm1.Button1Click(Sender: TObject);
begin
// menghindari proses flicker / kedipan
ProgressBar1.DoubleBuffered := True;
ProgressBar2.DoubleBuffered := True;
ProgressBar3.DoubleBuffered := True;
ProgressBar4.DoubleBuffered := True;
ProgressBar5.DoubleBuffered := True;
ProgressBar6.DoubleBuffered := True;
// proses counter dengan membuat thhread untuk masing2 counter
TCounter.Counter(ProgressBar1,StrToInt(Edit1.Text));
TCounter.Counter(ProgressBar2,StrToInt(Edit2.Text));
TCounter.Counter(ProgressBar3,StrToInt(Edit3.Text));
TCounter.Counter(ProgressBar5,StrToInt(Edit5.Text));
TCounter.Counter(ProgressBar6,StrToInt(Edit6.Text));
end;
   
Langkah 8
Silahkan anda compile. Tekan tombol Ctrl + F9
   
 
Tunggu beberapa saat… ( Sedang di cek kode programnya )
 
Apabila tidak muncul pesan error, berarti program yang anda buat telah berhasil dan silahkan anda tekan tombol F9 untuk menjalankan program aplikasinya.
   
Langkah 9
Anda tentukan masing – masing batas maksimal progressbar.
   
Langkah 10
Tekan tombol Proses. Apabila program berhasil, maka akan didapatkan tampilan seperti berikut.
   
 
pemulasystemthread0002.jpg
   
Langkah 11
Program sudah selesai anda buat. Sekarang silahkan anda tekan tombol Keluar.
   
   
Download
Silahkan anda download link diatas untuk mendapatkan contoh program aplikasi secara lengkap.
Ada beberapa masukan dan keluhan dari teman – teman, bahwa ada beberapa program contoh tidak bisa dijalankan dari delphi 7. Hal ini dikarenakan program contoh dibuat dengan menggunakan Delphi 2007 for win32.
Apabila anda menggunakan D7, sebaiknya anda mengikuti pandauan dari langkah – langkah yang sudah diberikan.
Atas perhatiannya, saya mengucapkan banyak terimakasih.
   
Link terkait  
   
Buku panduan
Dasar First Step To Be A Programmer
Menengah Pemrograman Database dengan Delphi dan MS SQL Server
Menengah Membangun database MLM
Iklan

10 Komentar

  1. Makasih banyak saya tunggu lagi program terbarunya buat inspirasi saya

    Komentar oleh Joe — Februari 5, 2008 @ 12:47 am

  2. sama sama mas joe

    oke, silahkan sering – sering main ke blog ini untuk mendapatkan artikel – artikel terbaru

    Komentar oleh ekoindri — Februari 5, 2008 @ 5:52 am

  3. meletakkan

    DataOut.Position=indek;

    dalam eksekusi thread tanpa sinkronisasi dengan thread utama sangat berpeluang menyebabkan deadlock dan tampilan yang tidak diharapkan. Mengisi position akan menyebabkan TProgressBar visual diupdate. Update visual VCL selalu dilakukan dithread utama.

    Lebih bagus lagi bila

    Procedure TCounter.UpdateProgress;
    begin
    DataOut.Position=indek;
    end;

    di ekseskusi thread:


    Synchronize(UpdateProgress);

    good luck

    Komentar oleh z — Februari 5, 2008 @ 12:15 pm

  4. Memang tampilan akan berkedip, oleh karena itu dalam tips diatas di dublebuffer.

    mungkin ini bisa jadi pelajaran dan menambah wawasan pengetahuan kepada delphier

    mungkin masukan ini akan dijadikan tips baru untuk artikel selanjutnya…

    buat mas z, makasih banyak, ditunggu komentar untuk artikel2 yang lainnya

    Komentar oleh ekoindri — Februari 5, 2008 @ 3:15 pm

  5. Masalah yang mungkin muncul tanpa sinkronisasi dengan thread utama bukan cuma kedipan (untuk buat fliker gak perlu multithreading). Tapi yang paling berbahaya seperti yang disebutkan sdr. z adalah deadlock. Dimana aplikasi tidak berjalan.

    Selain itu, juga spt sdr. z sudah sebutkan, tampilan bisa berantakan. Bayangkan kalau satu thread menggambar “1” pada canvas Label1 dan thread yang lain menulis “3” pada canvas yang sama pada saat bersamaan.

    Karena contoh program pada artikel ini masih sederhana masalah2 “besar” di atas tidak muncul. Namun seharusnya penanganan thread yang tepat juga harus ditekankan terlebih dahulu. Ibaratnya jangan beri Bazooka ama anak TK, kecuali kalo udah dikasih tau cara penggunaannya yang benar! Nah luh?!??.

    Wassalam,
    Luthfi B Hakim

    Komentar oleh Luthfi — Februari 6, 2008 @ 10:52 am

  6. wah dapat masukan dan kritikan membangun lagi nih..

    makasih banyak mas luthfi…

    Komentar oleh ekoindri — Februari 6, 2008 @ 3:27 pm

  7. Benar adanya apa yg disampaikan saudara z & Luthfi…
    Hati-hati mas Eko… maksud hati memang baik mengajarkan banyak hal.
    Namun sebaiknya anda pastikan dulu kebenaran teori & contoh praktis atas apa yg anda tulis; jangan sampai “menjebak” delphier baru (newbie)…

    Seperti halnya dalam kasus thread ini, apa yang anda tulis sangat berbahaya (access visual contents tanpa menggunakan synchronize); thread2 tersebut amat sangat mungkin menghancurkan program itu sendiri 😉

    Semangat!

    Komentar oleh Indra Gunawan — Februari 12, 2008 @ 2:07 pm

  8. thanxs mas indra

    insyaallah nanti saya akan tambahkan artikel tentang synchronize
    sehingga para Delphier bisa melihat sendiri

    syukur2 kelemahan ini bisa menjadikan tambahan wawasan buat para Delphier

    jangan jenuh2 kasih komentar ya mas…

    Komentar oleh ekoindri — Februari 12, 2008 @ 3:38 pm

  9. so gimana mas eko udah di update aritkelnya dengan mengacu komentar di atas..di tunggu ya 🙂

    Komentar oleh devy — Maret 1, 2008 @ 9:36 am

  10. sudah saya update mas, sekarang bisa download lagi 😀

    Komentar oleh ekoindri — Maret 1, 2008 @ 9:40 am


RSS feed for comments on this post.

Blog di WordPress.com.

%d blogger menyukai ini: