Delphi #IF (DEBUG) эквивалент?

Существует ли эквивалент Delphi директивы компилятора С# #if (DEBUG)?

Ответы

Ответ 1

Используйте это:

{$IFDEF DEBUG}
...
{$ENDIF}

Ответ 2

Помимо того, что сказал lassevk, вы также можете использовать несколько других методов компиляции-оценки (поскольку, полагаю, Delphi 6):

{$IF NOT DECLARED(SOME_SYMBOL)} 
  // Mind you : The NOT above is optional
{$ELSE}
{$IFEND}

Чтобы проверить, имеет ли компилятор эту функцию, используйте:

 {$IFDEF CONDITIONALEXPRESSIONS}

Для этого существует несколько применений.

Например, вы можете проверить версию RTL; Из справки Delphi:

Вы можете использовать RTLVersion в $IF выражения для проверки среды выполнения уровень версии библиотеки самостоятельно уровня версии компилятора.
Пример: {$ IF RTLVersion >= 16.2}... {$ IFEND}

Кроме того, сама версия компилятора может быть проверена снова из кода:

CompilerVersion присваивается значение компилятор, когда системный блок скомпилирован. Это указывает на пересмотр уровень возможностей компилятора/ синтаксис языка, который может независимо от RTLVersion. CompilerVersion можно протестировать в $IF выражения и должны использоваться вместо тестирования на VERxxx условное определение. Всегда проверяйте больше или меньше, чем известное уровень пересмотра. Это плохая идея проверьте уровень проверки.

Еще одна вещь, которую я делаю регулярно, - это определить символ, если он еще не определен (приятный для передовой совместимости), например:

 {$IF NOT DECLARED(UTF8String)}
 type
   UTF8String = type AnsiString;
 {$IFEND} 

Надеюсь, это поможет!

Ответ 3

DebugHook устанавливается, если приложение работает под отладчиком IDE. Не то же самое, что и директива компилятора, но все же довольно полезна. Например:

ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging

Ответ 4

Эти директивы управления доступны:

{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined

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

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  {$IFDEF MY_CONDITIONAL}
  ShowMessage('my conditional IS defined!');
  {$ELSE}
  ShowMessage('my conditional is NOT defined!');
  {$ENDIF}

  {$IFNDEF MY_CONDITIONAL}
  ShowMessage('My conditional is explicitly NOT defined');
  {$ENDIF}
end;