Вопрос

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

Это было полезно?

Решение

Использовать это:

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

Другие советы

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

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

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

 {$IFDEF CONDITIONALEXPRESSIONS}

Для этого есть несколько вариантов использования.

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

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

Также можно проверить саму версию компилятора, опять же из кода:

Компиляверсия присваивается значением компилятором при составлении системы.Это указывает на уровень пересмотра функций компилятора / синтаксиса языка, который может продвигаться независимо от Rtlversion.Компиляверсия может быть протестирована в $, если выражения, и должна использоваться вместо тестирования для условного определения Verxxx.Всегда тестируйте больше или меньше, чем известный уровень пересмотра.Это плохая идея, чтобы проверить конкретный уровень пересмотра.

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

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

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

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

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

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

{$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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top