网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
DELPHI定义的条件编译的全部说明
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

MyRecord = packed record // 不会对齐的记录宣告方式
{$APPTYPE GDI} 应用程序型态
一般的情形下, Delphi会以{$APPTYPE GUI}的方式产生一个图形的使用者接口程序,
如果您需要产生一个文字屏幕模式的程序, 那可以经由:
? 在.DPR中加入{$APPTYPE CONSOLE}
? 从主选单: Project/Options/Linker/EXE and DLL Options, 核取
「Generate Console Application」Check Box。
其它有关这个Compiler Directive的注意事项有:
? $APPTYPE不能应用在DLL的项目或单一的程序单元(Unit), 它只对.EXE有意义。
而且只有写在.DPR中才有作用。
? 我们可以应用System程序单元中的IsConsole函数在程序执行时侦测应用程序
的类型。
? 参阅Object Pascal手册第十三章可以知道更多有关Console Mode
Application的信息。
{$B-} 布尔评估
请看以下的程序:
if (Length(sCheckedDateString) <>
or EmptyStr(sCheckedDateString)
or (sCheckedDateString = ‘ . . ‘)
or (sCheckedDateString = ‘ / / ‘) then
begin
Result := True;
Exit;
end;
假如sCheckedDateString的字符串内容是「85/12/241」(长度9)的话, 以上的if述句,
其实在第一个逻辑判断时就已经知道结果了, 即使不看后来的逻辑运算结果也知道
整个式子会是真值。
假如您希望对整个逻辑表达式进行完整的评估 — 尽管结果已知, 后来的逻辑运算
也不影响整个的结果时仍要全部评估过, 请将这个Compiler directives设为{$B+},
反之, 请设为{$B-}, 系统的默认值是{$B-}。
{$D+} 除错信息
当程序以{$D+}(默认值)编译时, 我们可以用Delphi整合发展境境的Debugger设定
断点, 也可以使用Trace Into或Trace Info追踪程序的执行过程, 值得注意的是,
以{$D+}编译的程序, 执行的速度并不会受到影响, 只不过编译过的DCU的档案长度会
加大, 但EXE档的大小不变。
{$DEFINE条件名称} 定义条件名称
随着您对Compiler Directives的了解与应用程度的加深, 您会发现这是一个非常实
用的编译指示。
经常, 我们会因为除错需要﹑区别不同版本等缘故, 希望选择性的采用或排除某一
段程序, 这个时候, 我们就可以先以$DEFINE定义好一个条件名称(Conditional name),
然后配合{$IFDEF条件名称}…{$ELSE}…{$ENDIF}指示编译器按指定的条件名称之有无
来选择需要编译的程序。以下列的程序片断来说:
{$DEFINE _ProVersion}

procedure TForm1.Button1Click(Sender: TObject);
begin
{$IFDEF _Proversion}
frmPrint.ShowModal; // A
{$ELSE}
ShowMessage(’很抱歉, 试用版不提供打印功能’);
{$ENDIF}
end;
编译器将会选择编译上述A的那列程序, 日后, 如果我们需要编译「简易版」
的程序版本时, 只要:
? 将{$DEFINE _ProVersion}那列整个删掉。
? 或者, 将{$DEFINE _ProVersion}改成{-$DEFINE _ProVersion},
让它变成普通的批注
? 或者, 在{$DEFINE _ProVersion}的下一列加上{$UNDEF _ProVersion},
解除_ProVersion这个条件名称的定义。
这样, 由于_ProVersion这个条件名称未定义的缘故, Compiler就只会选择
{$ELSE}下的那段程序, 重新编译一次, 不需费太多力气, 很容易的就可以制作出
「简易版」了, 省去了要同时维护两份程序的麻烦。
使用$DEFINE时的其它注意事项如下:
? 以{$DEFINE}定义的条件名称都是区域的。换句话说, 它的作用范围只在
当时所在的单元才有效, 即使定义在unit的interface, 由其它的unit以uses参考也没有效,
仍然只有在目前的unit有作用。
? 此外, 它的作用范围是从定义起, 到unit结尾或者以{$UNDEF}解除为止。
? 如果程序单元中已经用{$DEFINE}定义了一个条件名称, 而且也没有用
{$UNDEF}解除定义, 重新{$DEFINE}一个同样名称并没有作用, 换句话说, 它们是同一个.
? 假如需要一个全域的条件名称, 您可以:主

网学推荐

免费论文

原创论文

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