选单: Project / Options / Directories/
Conditional 的 Conditionals 中填入条件名称。
? 以下的标准条件名称, 是Delphi 2.0已经预先预备好的, 我们可以直接引用,
同时, 它们都是全域的, 任何Unit都可以参照得到。
? VER90: Delphi Object Pascal的版本编号。90表示9.0版, 日后若出现9.5
版时, 也会有VER95的定义。
? WIN32: 指出目前是在Win32(95, NT)作业环境
? CUP386: 采用386(含)以上的CPU时, 系统会提供本条件名称。
? CONSOLE: 此符号会于应用程序是在屏幕模式下编译时才定义。
{$DESCRIPTION 描述内容}
应用{$DESCRIPTION}可以指定加入一段文字到.EXE或.DLL表头的模块描述进入点
(module description entry)中﹐通常我们会用这个Compiler Directive加入应
用程序的名称与版本编号到.EXE中。例如:
{$DESCRIPTION Dchat Version 1.0}
{$X+} 扩充语法
这是为了与之前的Pascal版本前向兼容的编译指令, 虽然设定这个开关型的指令仍有
作用, 但笔者建议您大可保留系统的默认值{$X+}, 在{$X+}下:
? 不需要非得准备一个变量接受函数的传回值, 换句话说, 函数的传回值可以
舍弃, 此时, 就可以像是呼叫程序一样, 很方便的呼叫函数。
? 支持Pchar型态与零基的字符数组作为C语言以Null结尾的字符串。
{$HINTS OFF} 提示讯息
打关{$HINTS}开关后, Compiler会提示程序设计师注意以下的情况:
? 变量定义了却没有使用
? 程序流程中不会执行的for或while循环
? 只有存入没有取用的指定叙述。意思是说, 指定数据到某一个变量之后,
却没有任何的程序参考取用这个变量值。
{$HINTS ON}
procedure MyTest;
const _False = False;
var
I, J: integer;
begin
if _False then
for I := 1 to 3 do ;
J := 3;
end;
{$HINTS OFF}
由于程序简单, 在两个$HINTS中间的程序, 我们不难看出:
? for循环不会执行到, I变量也因此不曾用过
? J := 3写了等于白写
但在程序越写越长而日趋复雓时, 藉由{$HINTS ON}的协助, 比较容易察觉出程序的毛病。
{$IFDEF} {$IFNDEF}
请参阅{$DEFINE}的说明, 在此补充说明{$IFNDEF}, 以下列程序来说, 即在指示Compiler
在_Test未定义时, 条件编译ShowMessage()那列程序:
{$IFNDEF _TEST}
ShowMessage(’_TEST not define’);
{$ENDIF}
换言之, {$IFNDEF}相当于{$IFDEF}的{$ELSE}部分。
{$IFOPT 开关}
到底{$B}是开着或关着呢? 如果我们想要指示Compiler按照某一个编译开关当时的状态作
我们指定的事, 应该该怎么做呢? 这时, {$IFOPT}就派得上用场了。例如:
{$R+}
{$Q-} // 特别指定为Q-
{$IFOPT R+} // 如果 Range Check 是开启的话
ShowMessage(’程序是在 Range Check 开启状态下编译的’);
// 这个 Q+ 也会在 IFOPT R+ 成立时才通知 Compiler
{$Q+}
{$ENDIF}
{$IFOPT Q+}
ShowMessage(’Q 也变成开启状态了’);
{$ENDIF}
ShowMessage() 与 {$Q+}会在$R+ 的情形下才编译, 因此, 虽然我们事前特别指示为{
$Q-}, 第二个的ShowMessage()在程序执行时也可以看到「Q 也变成开启状态了」。
{$IMAGEBASE档案基础地址}
这个Compiler directive用来指示.EXE或.DLL加载时的预设地址。例如: {$IMAGEBASE
$00400000}。如果指定加载的地址空间之前已经有其它模块占用了, Windows会为.EXE重
新配置一个新的加载地址。对于.DLL来说, 如果可以成功配置到我们写在{$IMAGEBASE}
的地址, 由于不需要重新配置内存地址, 不仅加载的速度较快, 如果有其它程序也参
照到这个DLL的话, 也可以减少加载时间与内存的消耗。
使用这个Compiler directive时需要注意的事项有:
? 指定的叙述必须是一个大于$00010000的32位整数数值, 同时, 较低位置的
16个位必须是零。
? DLL的建议地址范围从$40000000到$7FFFFFFF, 该范围的地址可以同时适用于
Windows 95与Windows NT。
{$I文件名称} 含入档案
以De