web-dev-qa-db-fra.com

Est-il possible de définir {$ IFDEF} pour plus d'une directive à la fois?

Est-il possible de définir plus d'un conditionnel dans une directive {$ IFDEF}?
[.____] J'aimerais avoir une syntaxe comme celle-ci:

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

Merci

42
Martin Reiner

Vous auriez besoin d'utiliser $IF à la place:

{$IF Defined(Condition1) or Defined(Condition2)}
DoSomething;
{$IFEND}
57
David Heffernan

Si vous devez soutenir Old Delphis (sans le support pour la Métadirective), vous pouvez utiliser une solution simple et une laide:

//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}

Si vous répétez le test plus d'une fois, le premier cas doit être réécrit comme suit.

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

{$IFDEF Cond1AndCond2}DoSomething{$ENDIF}
20
gabr

hey essayez ceci à partir de la Embarcadero.com

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

  ... 
  {$IFEND}
 end;
6
PresleyDias