Можно ли определить {$ IFDEF} для более чем одной директивы одновременно? - PullRequest
40 голосов
/ 04 января 2012

Можно ли определить более одного условия в одной директиве {$ IFDEF}?
Я хотел бы иметь синтаксис, подобный этому:

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

Спасибо

Ответы [ 3 ]

55 голосов
/ 04 января 2012

Вам нужно будет использовать $IF вместо:

{$IF Defined(Condition1) or Defined(Condition2)}
DoSomething;
{$IFEND}
20 голосов
/ 04 января 2012

В случае, если вам нужно поддерживать старый Delphis (без поддержки метафайла $ IF), вы можете использовать один простой и один уродливый обходной путь:

//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}
6 голосов
/ 04 января 2012

эй попробуйте это с embarcadero.com

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

  ... 
  {$IFEND}
 end;
...