OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 11 Декабрь, 2017 16:08

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Про консольный вывод
СообщениеДобавлено: Суббота, 17 Август, 2013 10:59 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2431
Откуда: Россия, Ярославль
В рамках проекта по разработке инструмента по вычленению области plain-text предпросмотра из .odc-файла решил использовать ББ со стандартными компонентами Files и Stores для разработки консольного инструмента, чтобы не писать байтовое рубилово вручную на каком-нибудь Go. Принцип работы прост - в параметрах командной строки передаём утилите файл, а утилита в стандартный вывод пишет содержимое, это содержимое потом можно направить в файл или ещё куда.
Сначала возникла проблема с консолью, открывающейся в новом окне. Её я решил, заменив AllocConsole на AttachConsole.
И тут возникла другая проблема с консолью. Если какая-нибудь утилита, типа ping выводит в консоль информацию сразу после строки запуска, например вот так:
Код:
D:\dev\bbcb>ping

Использование:
    ping [-t] [-a] [-n <число>] [-l <размер>] [-f] [-i <TTL>] [-v <TOS>]
         [-r <число>] [-s <число>] [[-j <список узлов>] | [-k <список узлов>]]
         [-w <тайм-аут>] [-R] [-S <адрес источника>] [-4] [-6] конечный_узел

то вывод ББ представляет собой что-то странное:
Код:
D:\dev\bbcb>odcextract.exe

D:\dev\bbcb>Hello, world!
ping

Использование:
    ping [-t] [-a] [-n <число>] [-l <размер>] [-f] [-i <TTL>] [-v <TOS>]
         [-r <число>] [-s <число>] [[-j <список узлов>] | [-k <список узлов>]]
         [-w <тайм-аут>] [-R] [-S <адрес источника>] [-4] [-6] конечный_узел
odcextract это утилита собранная через команду
Код:
DevLinker.LinkExe
odcextract.exe := Kernel+ Files YWinFiles
Meta Log Dialog Math Strings YSystemConsole YWinConsole
YWinPreviewExt~

В модуле YSystemConsole реализуются в YWinConsole и там же реализуются абстракции Log.

Как видно, проблема в том, что вывод строки из ББ производится в какой-то неожиданный момент, когда в консоли уже появляется приглашение для ввода следующей команды.
При этом перенаправление вывода в файл не работает. Консоль из Rocot и консоль авторства А. Ширяева имеют одинаковое поведение.
Я подумал, что это может быть связано с механизмом исполнения кода модулей при загрузке слинкованного файла, потому и разместил эту тему в "системных вопросах"


Вложения:
Console.odc [7.9 КБ]
Скачиваний: 94


Последний раз редактировалось Пётр Кушнир Суббота, 17 Август, 2013 11:13, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Про консольный вывод
СообщениеДобавлено: Суббота, 17 Август, 2013 11:02 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2431
Откуда: Россия, Ярославль
В приложенном модуле вывод в консоль реализуется через WriteConsole, но в оригинальном модуле вывод был организован через WriteFile, но это ничего не изменило, символы по-прежнему появляются в странном месте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Про консольный вывод
СообщениеДобавлено: Суббота, 17 Август, 2013 11:18 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2431
Откуда: Россия, Ярославль
Развитие событий.

Если отключить AttachConsole/AllocConsole, то получается перенаправить консольный вывод в файл, но в самой консоли он не отображается. В общем, вопрос с консолью остаётся открытым, вопрос про перенаправление вывода снимается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Про консольный вывод
СообщениеДобавлено: Суббота, 17 Август, 2013 14:10 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4468
Откуда: Россия, Орёл
viewtopic.php?f=47&t=2626


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Про консольный вывод
СообщениеДобавлено: Суббота, 17 Август, 2013 15:17 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2431
Откуда: Россия, Ярославль
Плохо я искал.


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

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


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

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


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

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