2012-01-04 70 views
32

是否可以在一个{$ IFDEF}指令中定义多个条件?
我想有语法是这样的:

{$IFDEF Condition1 OR Condition2} DoSomething; {$ENDIF} 
{$IFDEF Condition1 AND Condition2} DoSomethingElse; {$ENDIF} 

感谢

回答

44

您可能需要使用$IF代替:

{$IF Defined(Condition1) or Defined(Condition2)} 
DoSomething; 
{$IFEND} 
+1

谢谢,这正是我需要的。我想你不仅是贵公司的首席开发人员,也是一名建设经理,不是吗? – 2012-01-04 10:17:36

+2

@MartinReiner,也是总裁,总监兼高级看门人;-) – OnTheFly 2012-01-04 11:27:35

+2

@ user539484其实你是相当正确的! – 2012-01-04 11:45:56

5

哎从embarcadero.com

begin 
    ... 
{$IF Defined(MY_DEFINE) and (LibVersion > 2.0) } 
    Writeln(1); 
{$ELSE} 
    Writeln(2); 

    ... 
    {$IFEND} 
end; 
20
试试这个

如果你有支持老DELPHIS(不为$ IF metadirective的支持),您可以使用一个简单的和一个丑陋的解决方法:

//AND 
{$IFDEF Cond1}{$IFDEF Cond2}DoSomething{$ENDIF}{$ENDIF} 

//OR 
{$UNDEF Cond1OrCond2} 
{$IFDEF Cond1}{$DEFINE Cond1OrCond2}{$ENDIF} 
{$IFDEF Cond2}{$DEFINE Cond1OrCond2}{$ENDIF} 
{$IFDEF Cond1OrCond2}DoSomething{$ENDIF} 

如果您正在重复测试一次以上,如下第一种情况应该被重写。

{$UNDEF Cond1AndCond2} 
{$IFDEF Cond1}{$IFDEF Cond2}{$DEFINE Cond1AndCond2{$ENDIF}{$ENDIF} 

{$IFDEF Cond1AndCond2}DoSomething{$ENDIF} 
+5

老DELPHIS在这方面是D5及以上IIRC – 2012-01-04 11:46:30

+0

诚然,在D6加入$ IF:http://www.blong.com/Seminars/Delphi6.htm#Compiler – gabr 2012-01-04 16:26:22

相关问题