web-dev-qa-db-ja.com

一度に複数のディレクティブに対して{$ IFDEF}を定義することは可能ですか?

1つの{$ IFDEF}ディレクティブで複数の条件を定義することは可能ですか?
次のような構文が欲しいのですが。

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

ありがとう

42
Martin Reiner

$IF 代わりに:

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

($ IFメタディレクティブのサポートなしで)古いDelphiをサポートする必要がある場合は、1つの単純な回避策と醜い回避策を使用できます。

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

embarcadero.com から試してみてください

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

  ... 
  {$IFEND}
 end;
6
PresleyDias