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: Примеры кода можно посмотреть тут

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