Delphi — {$IFDEF} более одной директивы

Задача: Каким образом можно определить более одного условного оператора в одной проверке {$IFDEF}?
Инструментарий: Delphi
Решение:
Для того чтобы выполнить проверку нескольких условных операторов в одной проверке {$IFDEF} — нужно воспользоваться директивой {$IF выражение}.

Пример использования:

...
{$DEFINE CONDITION1}
{$UNDEF  CONDITION2}
...
begin
  ...
function CheckDirective1And : Boolean;
begin
  {$IF DEFINED(CONDITION1) AND DEFINED(CONDITION2) }
    Result := True
  {$ELSE}
    Result := False; // выполнится
  {$ENDIF}
end;
...
function CheckDirective1Or : Boolean;
begin
  {$IF DEFINED(CONDITION1) OR DEFINED(CONDITION2)}
    Result := True // выполнится
  {$ELSE}
    Result := False;
  {$IFEND}
end;

Другие варианты применения, с использованием констант:

...
{$DEFINE CONDITION1}
...
end.
const
  Const1 = 1.1;
...
begin
  ...
  {$IF DEFINED(CONDITION1) and (Const1 > 2.0) }
    Result := True
  {$ELSE}
    Result := False // выполнится
  {$ENDIF}
...
end.

Начиная с XE2 Update 2 — в модуле FMX.Types.pas появилась константа FireMonkeyVersion, которую также можно использовать для определения участка кода, который должен выполняться в определенной версии FireMonkey.

{$IF Declared(FireMonkeyVersion) and (FireMonkeyVersion > 16.0)}
    ...
{$ENDIF}

PS: Примеры кода можно посмотреть тут

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *