OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 25 Сентябрь, 2020 07:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 06 Май, 2010 23:22 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Енту подсистему в оформленном виде обещал тов. Роману. Три года ещё не прошло :), но тема опять всплыла --- может и "как есть" сгодится...

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

(из переписки Евгений Темиргалеев<->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:
Консоль создаётся только если хендлы ввода/вывода "никакие". Это позволяет для гуёвого приложения направить вывод в файл.
Код:
IF Std.nulRead THEN O.Open(O.exists); Std.Get END

(ред-р колл-ции) карточка: http://oberoncore.ru/bbcc/subs/console/


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB