Для более новых версий Delphi с поддержкой OSX и Android существует ли независимый от платформы способ определения наличия Writeln, чтобы можно было безопасно использовать вывод ?
Документация для вывода содержит примечание о том, что
У большинства процессов нет стандартного файла вывода, и запись в вывод вызывает ошибку. Программы Delphi имеют стандартный выходной файл, если они связаны как консольные приложения.
Моя основная цель - иметь платформенно-независимую резервную копию для ведения журнала, но во избежание любых ошибок ОС, которые могут возникнуть при отсутствии консоли (stdout).
Например: достаточно ли проверить IsConsole следующим образом:
procedure Log(const Msg: string);
begin
if LoggingFrameworkAvailable then
begin
// use the logging framework to output the log message
end if System.IsConsole then
begin
// fallback to stdout logging
WriteLn(Msg);
end;
end;
Таким образом, вопрос можно перефразировать: «Может ли приложение Delphi всегда безопасно использовать Вывод, если IsConsole истинно? ".
Поскольку он задуман как резервный метод ведения журнала, для меня будет нормально, если сообщения журнала будут «невидимыми» (перенаправлены на / dev / null), если гарантируется, что код будет работать на разных платформах без ошибок.
Если да, то безопасно ли работает этот код с Free Pascal? (См. Может ли программа Windows GUI, написанная на Lazarus, создать консоль и писать в нее во время выполнения?)