Home > Delphi, Did You Know > MESSAGE Directive

MESSAGE Directive


Delphi dilengkapi dengan compiler directive (direktif kompiler) yang memungkinkan kita melakukan perubahan terhadap bagaimana compiler menangani proses kompilasi kode program. Salah satu direktif yang mungkin jarang kita gunakan adalah MESSAGE. Mau tahu apa dan bagaimana direktif MESSAGE ?

Direktif MESSAGE berguna untuk menampilkan informasi petunjuk (hint), peringatan (warning), kesalahan (error) dan kesalahan fatal (fatal) seperti yang dilakukan oleh kompiler ketika proses kompilasi kode sumber. Pesan ini ditampilkan pada jendela Messages.

Berikut cuplikan penjelasan direktif MESSAGE yang saya ambil dari dokumen panduan Delphi.

MESSAGE directive (Delphi)
Syntax {$MESSAGE HINT|WARN|ERROR|FATAL 'text string' }

Remarks
The Delphi message directive allows source code to emit hints, warnings, and errors just as the compiler does. This is similar to #emit or pragma warn in C and C++.

The message type (HINT, WARN, ERROR, or FATAL) is optional. If no message type is indicated, the default is HINT. The text string is required and must be enclosed in single quotes.

Examples:

{$MESSAGE 'Boo!'} emits a hint
{$Message Hint 'Feed the cats'} emits a hint
{$messaGe Warn 'Looks like rain.'} emits a warning
{$Message Error 'Not implemented'} emits an error, continues compiling
{$Message Fatal 'Bang. Yer dead.'} emits an error, terminates compiler

Dalam implementasinya, direktif MESSAGE seringkali ditautkan dengan direktif SUPPORTS_COMPILETIME_MESSAGES untuk memastikan apakah kompiler yang digunakan mendukung direktif MESSAGE. Namun dalam kesempatan ini saya tidak akan menggunakannya.

Sebagai contoh, saya ingin memastikan bahwa kode sumber hanya dapat di-kompilasi oleh Delphi 2007, Jika versi lain, misalnya Delphi 7 digunakan untuk melakukan kompilasi, maka akan ditampilkan pesan kesalahan dan proses kompilasi dihentikan.

Berikut potongan kode nya:

{$IFDEF VER185}
  {$MESSAGE 'You used the correct Delphi version.'}
{$ELSE}
  {$MESSAGE FATAL 'You need Delphi 2007 to compile this source code!'}
{$ENDIF}
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

Berikut keterangan singkat dari potongan kode dari baris 1 hingga 5. Untuk baris lainnya hanya sebagai ‘hiasan’ bagi artikel ini.

Baris 1:
Baris satu menggunakan conditional directive untuk melakukan pemeriksaan versi Delphi yang digunakan. Pemeriksaan kondisi ditandai dengan direktif IF. Sedangkan versi delphi-nya adalah VER185. Untuk mengetahui versi Delphi yang digunakan untuk kompilasi, kita dapat menggunakan direktif VERxxx dimana xxx adalah kode versi Delphi. Untuk Delphi 2007 kodenya adalah 185, namun dapat juga digunakan nilai 180 (sebagai non-breaking terhadap Delphi 2006). Selengkapnya mengenai direktif versi Delphi, dapat disimak di Delphi Internal Versions.

Baris 2:
Baris 2 berisi statemen yang akan dipilih oleh kompiler bila versi Delphi sesuai dengan yang dikehendaki. Dalam potongan kode, kompiler akan menjalankan direktif MESSAGE berupa informasi bahwa versi Dlephi yang digunakan sesuai dan proses kompilasi dilanjutkan dengan blok kode berikutnya.

Baris 3:
Baris 3 berisi statemen untuk menandai blok yang harus dikompilasi jika versi Delphi tidak sesuai dengan yang dikehendaki.

Baris 4:
Baris 4 berisi statemen yang akan dipilih oleh kompiler bila versi Delphi tidak sesuai dengan yang dikehendaki. Dalam potongan kode, kompiler akan menjalankan direktif MESSAGE berupa kesalahan fatal bahwa versi Dlephi yang digunakan tidak sesuai dan proses kompilasi dihentikan.

Baris 5:
Menandai akhir dari blok direktif kondisional pemeriksaan versi Delphi.

Berikut potongan gambar apabila kode sumber tersebut dikompilasi dengan Delphi 2007.

Direktif Message untuk Delphi 2007

Direktif Message untuk Delphi 2007

Berikut potongan gambar apabila kode sumber tersebut dikompilasi dengan Delphi 7.

Direktif Message pada Delphi 7

Direktif Message pada Delphi 7

Jika dicermati, pada kompilasi Delphi 2007, pesan yang ditampilkan tidak sesuai dengan yang diinginkan. Seharusnya berupa HINT namun ternyata WARNING. Padalah apabila kode tersebut diubah agar dapat dikompile pada Delphi 7, dengan mengubah direktif VER180 menjadi VER150, maka pesan yang ditampilkan akan sesuai yaitu berupa HINT.

Berikut cuplikasn kode jika disesuaikan untuk Delphi 7.

Direktif Message yang sudah disesuaikan untuk Delphi 7

Direktif Message yang sudah disesuaikan untuk Delphi 7

Ada pendapat ?

Semoga bermanfaat.

  1. July 25, 2008 at 4:38 pm

    Pendapat saya adalah…. ehmm dapat ilmu baru nih dari papa Bari…
    Postingnya bermanfaat buat newbie2 seperti daku 😀

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: