Sabtu, Agustus 22, 2009

Delphi Compiler Directives

Membuat program yang bisa di kompilasi dengan beberapa kompiler terkadang dibutuhkan saat ini. Misalnya ada program yang dibuat dengan Delphi 5, lalu setelah karena juga punya Delphi 2006, atau Delphi 2007, juga perlu diupayakan agar kode program tersebut bisa dikompilasi di semua kompiler Delphi tersebut tanpa masalah.

Inilah perlunya Delphi Compiler Version Directives. Sejatinya ada tiga jenis direktif di Delphi:

  • switch directives
  • parameter directives
  • conditional directives
Kompilasi bersyarat dimungkinkan dengan conditional directives sehingga hanya blok source code yang diinginkan yang dikompilasi oleh suatu kompiler.

Direktif kompiler $Ifdef menandai suatu bagian untuk kompilasi bersyarat.

Sintaks:

{$IfDef DefName}
...
{$Else}
...
{$EndIf}


Simbol versi Delphi sebagai berikut:
  • SYMBOL - COMPILER VERSION

  • VER80 - Delphi 1
  • VER90 - Delphi 2
  • VER100 - Delphi 3
  • VER120 - Delphi 4
  • VER130 - Delphi 5
  • VER140 - Delphi 6
  • VER150 - Delphi 7
  • VER160 - Delphi 8
  • VER170 - Delphi 2005
  • VER180 - Delphi 2006
  • VER180 - Delphi 2007
  • VER185 - Delphi 2007
  • WIN32 - Mengindikasikan bahwa lingkup operasinya adalah API Win32.
  • LINUX - Mengindikasikan bahwa lingkup operasinya adalah Linux
  • MSWINDOWS - Mengindikasikan bahwa lingkup operasinya adalah MS Windows/li]
  • CONSOLE - Mengindikasikan bahwa lingkup operasinya adalah konsol/aplikasi terminal.
Contoh:

{$IfDef VER130}

kode untuk D5
{$Else}
kode untuk selain D5..
{$EndIf}

Untuk membuat suatu kode berfungsi untuk D5 atau selainnya.

Selain pre-defined compiler directive seperti diatas, compiler directive bisa juga di definisikan sendiri menggunakan kata $Define, sintaksnya:

{$Define Simbol}

Dengan didefinisikan seperti diatas, simbol menjadi on. Biasanya definisi simbol ini diletakkan dalam include file (*.inc).
Contoh:

procedure TForm1.FormCreate(Sender: TObject);
var
text : string;

begin
// definisikan dan aktifkan simbol
{$Define MODEAKTIF}

text := 'Simbol saat ini dalam mode aktif';

// Pengecekan kondisi untuk menguji status direktif MODEAKTIF
{$IfDef MODEAKTIF}
ShowMessage('text = '+text);
{$EndIf}

// matikan direktif
{$UnDef MODEAKTIF}

text := 'Tidak dalam mode aktif lagi..';

// Tampilkan hasil proses jika masih dalam mode aktif
{$IfDef MODEAKTIF}
ShowMessage('text = '+text);
{$EndIf}
end;

Hmmm... setelah 18 tahun memegang Delphi, baru kali ini saya serius dengan compiler directives, karena lagi butuh bangett.. :-)

Tidak ada komentar: