У меня есть общий модуль, который выполняет некоторые записи в GExperts Debugger и / или OutputDebugString. Я собираюсь использовать его в консольном приложении, поэтому хочу, чтобы он мог выводить на стандартный вывод через Writeln ()
.
В основном исполняемом файле уже есть {$ APPTYPE CONSOLE}, но я не думаю, что мне это поможет. Процедура регистрации будет вызываться из нескольких мест:
BPL и DLL будут построены без видимости для директивы {$ APPTYPE CONSOLE}, поэтому я не могу использовать условную компиляцию IFDEF. BPL и DLL должны иметь возможность работать в любом направлении, в зависимости от того, является ли основное приложение обычным winapp или консольным приложением.
Мне пришло в голову одно неприятное решение - использовать имя исполняемого файла. пример:
if (UpperCase(ExtractFileName(ParamStr(0))) = 'MYCONSOLEAPP.EXE') then ...
Но я ненавижу это делать, так как у меня могут быть другие консольные приложения ...
Я бы предпочел просто волшебную функцию AmIAConsoleApp: boolean; Есть что-нибудь подобное? В этом проекте я использую Delphi2005.
Обновление: я вижу, что я в некотором роде дубликат этого вопроса , но я хотел бы опросить сотрудников Delphi, чтобы узнать, есть ли лучший подход.