网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
DELPHI定义的条件编译的全部说明
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
lphi IDE修改Compiler directives的确相当方便, 但往往我们仍然需要将Compiler
directives直接加入程序中, 可是当我们这样作之后不用多久, 就会发现要一一重新
修改各个单元中的这些Compiler directives时, 实在是既无聊而又容易出错的工作。
这时候, 假如您一开始就采用{$I文件名称}, 整件事就会变得很简单。怎么做呢?
让我用一个例子告诉您 –
? 先用一般的文书编辑器建好一个MySet.inc的普通文本文件, 内容为:
{$H+}
{$DEFINE _Proversion}
? 在我们的程序中, 加入一列{$I MySet.inc}, 例如:
unit Unit1;
{$I MySet.inc}

interface

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
{$IFDEF _ProVersion}
ShowMessage(’专业版’);
{$Else}
ShowMessage(’只有专业版才有此功能’);
{$ENDIF}
end;

这是子程序的观念嘛! 没错, 就是这么简单而已, 以后如果有任何变化, 修改MySet.INC,
然后Project/Buile All即可, 实在是够简单的了。
基本动作会了之后, 让我告诉你多一点有关{$I文件名称}的事。
? 一旦应用了{$I文件名称}, 几乎等于Compiler在编译时, 让Compiler将这个档
案的内容贴进我们的程序中的那个位置。
? 如果没有注明扩展名, Delphi预设这个档案是.PAS。
? 如果在项目的目录中找不到这个档案的话, Delphi会陆续搜寻Tools/Options
/Library中的Library Path中的目录。
另外, 当您写作了一个DLL, 使用者在使用其中的函数前必须宣告过, 如果能够一并提
供这些函数的宣告文件, 使用者只要一行{$I xxx}
即可, 是不是很方便呢?
{$I+} EInOutError检查
在{$I+}(系统默认值)状态编译的程序, 一旦发生I/O错误时, 将会举发一个EInOutError
的例外, 假如我们在特定的情况下不希望出现这个例外的讯息时(例如前文提到的侦测档
案是否存在函数), 可以将这个Compiler directive设为{$I-}, 此时, 程序执行时是否发
生过错误,程序设定师必须自行检查IOResult这个公用变量的值, 如果是零, 表示没有错误,
非零的错误代码含意请详查Online help。
{$L文件名称} 连结目标文件
如果您有一个.OBJ文件要并入Delphi的程序时, 可以在程序中加入:
{$L OTHER.OBJ}
这样, 就可以使用OTHER.OBJ中的程序了, 值得注意的是, 函数或程序在呼叫前,
仍然必须用external宣告过, 表明这些模块是来自「外部」的函式。
举例来说, 笔者有一份由Keypro厂商提供的.OBJ檔, 在使用时, 相关的程序如下:

{$L hasptpw.obj}
{$F+}
procedure hasp (Service, SeedCode, LptNum, Pass1, Pass2 : word;
var p1,p2,p3,p4 : word); external;
{$F-}

经过{$L hasptpw.obj}宣告之后, 程序的其它部分就可以直接呼叫原先位于 hasptpw.obj
中的hsap这个程序了。
{$L+} 区域符号信息
在{$L+}时, Delphi会额外加入一些区域符号信息, 这使得我们可以应用Delphi IDE中的
View/Call Stack, View/Watch在程序执行时检视变量内容与函式呼叫的关系。
应用这个Compiler directive的注意事项有:
? {$D-}时, {$L+}不会有作用。
? 使用{$L+}, 只会加大.DCU的档案大小, 对.EXE的大小与执行速度并没有影响。
{$H+} 长字符串宣告
Delphi 2.0之后, 字符串多了一个更为好用的长字符串, 不仅没有资料长度255的限制,
与C语言惯用的Null-terminated string兼容性也大为提高。
使用{$H}时的注意事项有:
? {$H+}的编译情形下, 以string定义的字符串变量都是长字符串, 请注意,
字符串是否为长字符串是在字符串定义时决定的, 例如:
procedure TForm1.Button1Click(Sender: TObject);
{$H-}
var
s: string;
begin
{$H+}
s := ‘测试一下长字符串’;
Windows.MessageBox(0, pchar(s), ‘讯息’, 64);
end;
由于var前{$H-}的缘故, 虽然在begin后我们立即设定为{$

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号