OberonCore https://forum.oberoncore.ru/ |
|
Про консольный вывод https://forum.oberoncore.ru/viewtopic.php?f=2&t=4442 |
Страница 1 из 1 |
Автор: | Пётр Кушнир [ Суббота, 17 Август, 2013 10:59 ] | ||
Заголовок сообщения: | Про консольный вывод | ||
В рамках проекта по разработке инструмента по вычленению области 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 odcextract это утилита собранная через команду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] конечный_узел Код: DevLinker.LinkExe odcextract.exe := Kernel+ Files YWinFiles Meta Log Dialog Math Strings YSystemConsole YWinConsole YWinPreviewExt~ В модуле YSystemConsole реализуются в YWinConsole и там же реализуются абстракции Log. Как видно, проблема в том, что вывод строки из ББ производится в какой-то неожиданный момент, когда в консоли уже появляется приглашение для ввода следующей команды. При этом перенаправление вывода в файл не работает. Консоль из Rocot и консоль авторства А. Ширяева имеют одинаковое поведение. Я подумал, что это может быть связано с механизмом исполнения кода модулей при загрузке слинкованного файла, потому и разместил эту тему в "системных вопросах"
|
Автор: | Пётр Кушнир [ Суббота, 17 Август, 2013 11:02 ] |
Заголовок сообщения: | Re: Про консольный вывод |
В приложенном модуле вывод в консоль реализуется через WriteConsole, но в оригинальном модуле вывод был организован через WriteFile, но это ничего не изменило, символы по-прежнему появляются в странном месте. |
Автор: | Пётр Кушнир [ Суббота, 17 Август, 2013 11:18 ] |
Заголовок сообщения: | Re: Про консольный вывод |
Развитие событий. Если отключить AttachConsole/AllocConsole, то получается перенаправить консольный вывод в файл, но в самой консоли он не отображается. В общем, вопрос с консолью остаётся открытым, вопрос про перенаправление вывода снимается. |
Автор: | Евгений Темиргалеев [ Суббота, 17 Август, 2013 14:10 ] |
Заголовок сообщения: | Re: Про консольный вывод |
viewtopic.php?f=47&t=2626 |
Автор: | Пётр Кушнир [ Суббота, 17 Август, 2013 15:17 ] |
Заголовок сообщения: | Re: Про консольный вывод |
Плохо я искал. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |