Delphi 预编译指令 的用法

时间:2022-07-01 16:06:43

A.3 使用条件编译指令
条件编译指令是非常重要的编译指令,他控制着在不同条件下(例如,不同的操作系统)产生不同的代码。条件编译指令是包含在
注释括号之内的,如下表所示。
              
   条件编译指令      含义
     $DEFINE   用于定义一个条件符号,一旦定义,条件符号就为真
     $ELSE     与$IFDEF配合使用,如果$IFDEF条件为假,则只对源文件$ELSE后一小部分进行编译
     $ENDIF    结束一个以$IF开始的条件段
  
     $IFDEF    对条件符号进行判断,为真则编译源文件
     $IFNDEF   对条件符号进行判断,为假则编译源文件 
     $IFOPT    根据编译开关状态,对源文件编译
 
     $UNDEF    撤消以前的条件符号定义
这些条件编译指令是非常有用的。例如,可以通过开关的状态来控制编译:
     {IFOPT R+}
         showmessage('Compiled with range-checking');
     {$ENDIF}
也可以通过定义条件符号来控制编译:
     
     {$Define s}
     ……
     {$ifdef s} 
         showmessage('yes');
     {$else}
         showmessage('no');
     {$endif} 
他的编译结果是显示'yes',但是如果省去{$Define s}则显示'no'。
在Delphi中已经预定义了一些关键的条件符号,如下表所示。
   条件符号           含义
    VERxx    编译器版本,XX表示版本,例如:Delphi 1.0 的编译器版本为80、Delphi 5.0 的编译器版本为130
    WIN32    是否WIN32的运行环境(Windows 95.98/NT/2000)
    CPU386   是否Intel386以上的处理器
    CONSOLE  是否控制台程序
Delphi的编译器指令除了以上的指令外还有一些,不过最为常用的指令已经全部介绍完了。对于普通的程序,Delphi是不需要编程者去添加编
译器指令的,Delphi已经自动完成,但是要得到高品质的应用程序或者有特殊的要求的程序就必须熟悉Delphi的编译指令。Delphi不仅有最快
的编译器而且编译器的功能也非常强大。
 
**********************************************************************************************
简单例子:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FCaption: string;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
//用到文件  VersionDefinition.inc
{$I VersionDefinition.inc} 或  {$DEFINE   AAA}   //   定义行
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  FCaption := 'Other';
  {$IFDEF AAA}
  FCaption := 'AAA';
  {$ENDIF}
  {$IFDEF BBB}
  FCaption := 'BBB';
  {$ENDIF}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := FCaption;
end;
end.
**************************
文件VersionDefinition.inc内容
//////////////////////////
  {$DEFINE AAA}
  {..$DEFINE BBB} 
-------------------------------------------
 1.编译后运行,按下Button,则看到窗体标题栏显示“AAA”。程序编译了FCaption   :=   ’AAA’的语句。   
 2.改变定义行的程序段:   
  当改为{$DEFINE   BBB}时,再次编译运行,则看到窗体标题栏显示“BBB”。程序编译了FCaption   :=   ’BBB’的语句。当取消定义行或改为{$DEFINE   NOTHING}或其他名称时,再次编译运行,则看到窗体标题栏显示“Other”。程序只编译了FCaption   :=   ’Other’的语句。