Delphi {КОНСОЛЬ $IFDEF} проблема

Я просто попробовал

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  {$IFDEF CONSOLE}
    beep;
  {$ENDIF}
end.

и ожидаемый услышать a beep во время времени выполнения, но нет. Следующие тестовые работы, хотя:

  if IsConsole then
    beep;

Почему время компиляции не тестирует работу? Насколько я могу понять из этого документа, он уверенный должен работать.

11
задан Andreas Rejbrand 10 July 2010 в 11:03
поделиться

3 ответа

Если в опциях компоновщика выбрать "Generate console application", будет определено 'CONSOLE'.

9
ответ дан 3 December 2019 в 05:11
поделиться

Это не работает в *.dpr файле, но это нормально в модуле (вызов MakeBeep из консоли *.dpr):

unit Unit1;

interface

uses
  SysUtils;

procedure MakeBeep;

implementation

procedure MakeBeep;
begin
  {$IFDEF CONSOLE}
    beep;
  {$ENDIF}
end;
4
ответ дан 3 December 2019 в 05:11
поделиться

Директива $APPTYPE определяет, следует ли создавать консоль Win32 или графическое приложение пользовательского интерфейса, это НЕ директива компилятора.

{$ifdef} тестирует пользовательские директивы компилятора, заданные операторами {$define name}. Как и в

{$define KeepDlibTempFiles}

Вместо него можно использовать 'IsConsole' (как вы уже выяснили).

3
ответ дан 3 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: