43 votes

Est-il possible de définir {$IFDEF} pour plusieurs directives à 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

60voto

David Heffernan Points 292687

Vous devrez utiliser $IF place :

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

20voto

gabr Points 20458

Si vous devez prendre en charge l'ancien Delphis (sans la prise en charge de la méta-directive $IF), vous pouvez utiliser une solution de contournement simple et 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}

6voto

PresleyDias Points 1927

hé essayez ceci sur embarcadero.com

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

  ... 
  {$IFEND}
 end;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X