Енту подсистему в оформленном видеобещалтов.Роману. Три года ещё не прошло, но тема опятьвсплыла--- может и "как есть" сгодится...

Как база использовалась реализация Log для консолиИвана Горячева(viewtopic.php?p=5979#p5979)
Вложение:Комментарий к файлу:Tools->Decode
Console.txt[59.34 КБ]
Скачиваний: 1913

(из перепискиЕвгений Темиргалеев<->AVC)
> -- Евгений Темиргалеев писал(а):
> Вот подсистема Console, которая реализует In и Out для консоли. Она у меня не доделана для работы с unicode, и вообще не доведена до ума - вроде alpha-версия. Но для отладочных целей хватает (особенно в DLL), а больше пока не надо.> -- AVC писал(а):
> Работает, но есть (пока) недостаток - не могу переназначить вывод в файл (program.exe > output)> -- Евгений Темиргалеев писал(а):
> С этим тоже возился. Вот что могу вспомнить:- ощущение, что в винде с этим бардак полный. Для ГУЁвых приложений и консольных механизмы отличаются. (Например, если стартовать гуёвое с консоли, эта консоль для него не будет вводом/выводом по умолчанию, а для консольного будет).- AllocConsole also sets up standard input, standard output, and standard error handles for the new console. Если Вы создали консоль для гуёвого приложения, то перенаправление в файл пропало.Вот как сделано в Console (надеюсь, что вспомнил правильно... надо было сразу про эти грабли записать  ):1) Модуль StdStreams читает хендлы для стандартных потоков. В т. ч. и при загрузке. Для консольных приложений хендлы есть всегда. Для гуевого если вывод не назначен в файл и не открыта консоль, они будут "никакие". Это отражают флаги nulRead/nulWrite.2) Модуль Open используется в In/Out для создания консоли. Либо открывается всегда новая консоль (new) либо, только если консоли нету (exists).3) Процедуры Open в модулях In/Out:Консоль создаётся только если хендлы ввода/вывода "никакие". Это позволяет для гуёвого приложения направить вывод в файл.
(ред-р колл-ции) карточка:http://oberoncore.ru/bbcc/subs/console/