Delphi - 如何在条件编译中使用更多定义的值

12

我能在我的代码中组合一些IFDEF吗?

例如:

{$IFDEF INCOMING or OUTGOING}
...
{$ENDIF}

感谢您的帮助:dd

4个回答

21

使用Defined()$IF代替$IFDEF

{$IF Defined(INCOMING) or Defined(OUTGOING)}
...
{$IFEND}

但请注意,这在早期版本的Delphi中不起作用。 在那里做起来非常容易: - Rudy Velthuis
@rudy,你的评论丢失了一部分吗? - David Heffernan
当我想要取消时,我的手指不小心从魔术鼠标上滑落了,页面改变了,我找不到我的回复。我以为我真的成功取消了它。<g> - Rudy Velthuis
在较新的版本中,请使用 {$ENDIF} 代替。 - StanE
此外,如果您想检查多个定义是否未被定义,可以在每个Defined()前加上not。例如,{$IF not Defined(INCOMING) and not Defined(OUTGOING)}。 - Toby Groves

14

对于旧版本,可以尝试以下方法:

{$IFDEF INCOMING}
  {$DEFINE INCOMING_OR_OUTGOING}
{$ENDIF}
{$IFDEF OUTGOING}
  {$DEFINE INCOMING_OR_OUTGOING}
{$ENDIF}

{$IFDEF INCOMING_OR_OUTGOING}
...
{$ENDIF}

1
“older”的定义是什么? - Andreas Rejbrand
1
@Andreas,$IF 在 Delphi 6 中被添加。 - David Heffernan
6
@Andreas:指那些没有定义CONDITIONALEXPRESSIONS的代码,这包括早于Delphi 6的版本。 - Ondrej Kelle


1
这是 David 的答案的一个变体,使用了“not”。
当我想在调试模式下禁用应用程序的启动画面时,我使用这个。如果我忘记在发布版本中取消定义 NOSPLASH,它可以防止我意外地让启动画面保持禁用状态。
  {$IF not (Defined(NOSPLASH) AND Defined(DEBUG))}
     //code to create splash 
  {$IFEND} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接