关于条件编译(100分)

  • 主题发起人 坏蟑螂
  • 开始时间

坏蟑螂

Unregistered / Unconfirmed
GUEST, unregistred user!
我的代码中到处充斥着如下的条件编译指令:
{$IFDEF DEBUGGING}
.......
{$ELSE}
.......
{$ENDIF}
然后在Project|Options的Dialog中的Directories/Conditionals页的
Conditional Defines中加入"DEBUGGING",以调试程序,或去掉它以发布
正式程序。

问题:
我希望在Project|Options的Dialog中的Compiler页中,
根据有无DEBUGGING,Optimization、Debug Infomation等CheckBox
能自动地Checked或UnChecked,比如:
Optimization.Checked:="无DEBUGGING";
DebugInfomation.Checked:="有DEBUGGING";

限制:
我知道能这样解决:
{$IFDEF DEBUGGING}
{$O+}
{$D-}
{$ELSE}
{$O-}
{$D+}
{$ENDIF}
但这些玩意儿必须加入每个单元,包括*.dpr文件。

所以,我的问题是:
在什么地方只将这些东东加入一次,就能全局地解决问题。
或用其他什么方法,达到类似的效果。
 
编译开关只需加入*.dpr中即可,不必在每个单元中加入
而{$IFDEF DEBUGGING}、{$ELSE}、{$ENDIF}之类的就需在每个程序段里写了
 
to 小天:
遗憾地告诉你,你的办法不行。
我刚学DELPHI时就试过,
刚才,出于对你的尊重,
我又试了几次,确实不行。
(另外说句悄悄话:您能自己拿捏准了再说吗?
以机会主义的方式去取分,很浪费人家的时间,
甚至有一点点"蒙"的性质。只要您说对了,我想我是肯定会把分给你的。)

谢谢你的帮助,如果有兴趣,可以继续。
 
哇,话说得好重也。。。。。。
怕了你了,现就一些问题纠正如下:
一般情况下,条件编译指令只需放在*.DPR文件中即可。但一些特殊指令需特殊放置:
如{$O+}......{$O-}应把需优化的代码括起来。
{$D+}....{$D-}应把需生成调试信息的地方括起来
但绝大多数的条件编译指令仍只需放在*.DPR文件中即可
 
将这些编译开关写入一个单独的pas中.
然后在每个dpr, pas中加上{$I 'the_pas.pas'}
 
在windows.pas中加入就行了。
 
to 小天
>但一些特殊指令需特殊放置:如{$O+}......{$O-}应把需优化的代码括起来。
>{$D+}....{$D-}应把需生成调试信息的地方括起来

如你所说,不就和我最开始的办法一样么?

to amo
我不知是我没有明白你的意思,还是你没有明白我的意思?

to everyone
目前看来,Another_eYes的办法至少是可行的,
但不知还有没有更好的办法?
如果三天之内,没有更好的答案,我就准备把分给他了。
大家认为如何?

请继续参与,谢谢。

 
把分给Eyes吧,
我上午的意思是第个form都会引用windows.pas,
不如把你需要的加入其中就是了。

另外,
看看*.dof文件,
我比较喜欢直接修改它。
 
呵呵,就和大多数语言里的include一样. :)
 
to amo:
单元之间以USES的方式互相引用,编译指令是不会互相影响的,
所以你上午的方式是不行的;
*。dof文件中没有对应于Project|Options的Dialog中的Compiler页中的选项,
它们都在*。CFG文件中,而且改*。CFG文件和改Project|Options的Dialog有什么区别呢?我要的是Optimization、Debug Infomation、Local Symbols、Referenc Info、Assertions
这四个编译选项“自动地适应”DEBUGGING的出现和消失。
        ^^^^^^^^^^
所以你下午的方法也是不行的。

谢谢各位,请继续。
 
???
A.操作失误 B.有心送分 C.其它

多谢指教,在编译选项的设置方面,Delphi是不如C++方便。

 
对不起,昨天操作错误,
后来就再也连不上来了。
干脆我再开一个话题,给100分给Another_eYes算了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
713
import
I
D
回复
0
查看
741
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部