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.
Berikut potongan gambar apabila kode sumber tersebut dikompilasi dengan 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.
Ada pendapat ?
Semoga bermanfaat.
Leave a Reply Cancel reply
Categories
- CodeRepository (3)
- Delphi (26)
- Delphi Package Selector (3)
- Did You Know (23)
- Folding (10)
- Hacking Delphi (2)
- News (41)
- Ngoprek (51)
- OSMark (1)
- Out Of Topics (28)
- Projects (17)
- Religi (2)
- Rizki Bariputra (7)
- Software (3)
Archives
- September 2010
- August 2009
- July 2009
- May 2009
- April 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- April 2008
- March 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
- November 2005
- October 2005
- September 2005
- August 2005
- July 2005
Pendapat saya adalah…. ehmm dapat ilmu baru nih dari papa Bari…
Postingnya bermanfaat buat newbie2 seperti daku 😀