За по-новите версии на Delphi, с поддръжка на OSX и Android, има ли независим от платформата начин за откриване дали Writeln към Output може да се използва безопасно ?
Документацията за Output съдържа бележка, която казва
Повечето процеси нямат стандартен изходен файл и записът в Output поражда грешка. Програмите на 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 е True?".
Тъй като е предназначен да бъде резервен метод за регистриране, би било добре за мен, ако съобщенията за регистрационни файлове са "невидими" (пренасочени към /dev/null), стига кодът да се изпълнява между платформи без грешки.
Ако да, този код работи ли безопасно и с Free Pascal? (Вижте Може ли GUI програма на Windows, написана на Lazarus, да създаде конзола и да пише в нея по време на изпълнение?)