05 Mei 2009

Kompilasi Berdasarkan Kondisi dengan Compiler Directive

Windows pada tiap rilisnya terdapat lebih dari satu edisi, misalnya Windows XP yang terdapat edisi Home maupun Professional. Begitu pula aplikasi yang kita buat, mungkin ingin dibuat dalam beberapa edisi. Dengan makin kompleks program yang kita buat, makin susah untuk memilih fitur untuk tiap edisi. Misal untuk edisi 1 ada fitur a, b, c. Untuk edisi 2 terdapat fitur-fitur pada edisi 1 ditambah dengan fitur d dan e. Di masa mendatang mungkin saja ada penambahan fitur di dua edisi tersebut, atau bahkan ada penambahan edisi baru lagi. Jelas akan mempersulit proses kompilasi.
Masalah ini bisa dipermudah dengan penggunaan compiler directive. Ada berbagai macam compiler directive dan yang kita pakai adalah compiler directive {$DEFINE}. Compiler directive {$DEFINE} diguanakan untuk mendefinisikan simbol yang nantinya bisa digunakan untuk pemilihan kondisi pada program. Misalnya dengan contoh diatas, aplikasi yang mempunyai dua edisi, edisi 1 dan edisi 2, pada edisi 1 menu yang ada pada edisi 2 di sembunyikan, dan pada edisi 2 sebaliknya. Dalam source .pas yang kita buat tinggal menambahkan baris seperti ini untuk edisi 1.
{$DEFINE EDISI1}
Atau seperti ini untuk edisi 2.
{$DEFINE EDISI2}
Kemudian untuk pemilihan kondisi bisa kita lakukan dengan cara seperti ini.
{$IF DEFINED(EDISI1)}
Menu1.Visible := False;
Menu2.Visible := False;
Menu3.Visible := False;
{$ELSE}
Menu1.Visible := True;
Menu2.Visible := True;
Menu3.Visible := True;
{$IFEND}
Jika ingin compile edisi 1, kita hapus atau remark baris yang berisi definisi edisi 2 dan begitu pula sebaliknya. Misalkan jika kita mendefinisikan edisi 1 saja, jika program di compile maka hanya baris-baris ini saja yang dijalankan.
Menu1.Visible := False;
Menu2.Visible := False;
Menu3.Visible := False;
Sebaliknya jika kita mendefinisikan edisi 2 saja, jika program di compile maka hanya baris-baris ini saja yang dijalankan.
Menu1.Visible := True;
Menu2.Visible := True;
Menu3.Visible := True;

Tidak ada komentar:

Posting Komentar