Можно ли определить {$ IFDEF} сразу для нескольких директив? Можно ли определить более одного условного выражения в одной директиве {$ IFDEF}? Я бы хотел иметь такой синтаксис: {$IFDEF Condition1 OR Condition2} DoSomething; {$ENDIF} {$IFDEF Condition1 AND Condition2} DoSomethingElse; {$ENDIF} Спасибо Ответ 1 Вместо этого вам следует использовать $IF: {$IF Defined(Condition1) or Defined(Condition2)} DoSomething; {$IFEND} Ответ 2 Если вам нужно поддерживать старый 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} Ответ 3 попробуйте это из embarcadero.com begin ... {$IF Defined(MY_DEFINE) and (LibVersion > 2.0) } Writeln(1); {$ELSE} Writeln(2); ... {$IFEND} end;
Ответ 1 Вместо этого вам следует использовать $IF: {$IF Defined(Condition1) or Defined(Condition2)} DoSomething; {$IFEND}
Ответ 2 Если вам нужно поддерживать старый 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}
Ответ 3 попробуйте это из embarcadero.com begin ... {$IF Defined(MY_DEFINE) and (LibVersion > 2.0) } Writeln(1); {$ELSE} Writeln(2); ... {$IFEND} end;