Предлагаю пакет (Binding) Ada2012 Unicode NCURSES под Windows. Исходники и пояснения в проекте http://www.rtsdd.ru/Ada2012 Unicode NCURSES.aspx. Сергей Дюков. [Non-text portions of this message have been removed]
Здравствуйте, Сергей! > Предлагаю пакет (Binding) Ada2012 Unicode NCURSES под Windows. > > Исходники и пояснения в проекте http://www.rtsdd.ru/Ada2012_Unicode_NCURSES.aspx. Интересно. На ум ещё приходят PDCurses, который вроде бы как лучше для Windows (но это не точно), а также Linenoise NG и winlibs/wineditline с интерфейсом, аналогичным readline. Оригинальный readline работает поверх ncurses, насчёт этих не знаю. В идеале они, наверное, должны дружить (в смысле, реализации API ncurses и API readline) на всех платформах, если подобрать комбинацию. Или в ncurses уже есть функционал, аналогичный readline? Если появляется контрольный пакет из кроссплатформенных юникодных реализаций ncurses+readline, я на своём сайте «Всё о Паскале» могу наконец начинать ссылаться со страниц, посвящённых процедурам модуля Crt, на страницы, посвящённые такому заменителю. С уважением, Левашев Иван, Барнаул -- If you want to get to the top, you have to start at the bottom
Здравствуйте, Иван! Пакет AdaCursesW -- это привязка (binding) к WIDEC-варианту покуроченной библиотеки ncurses-6.0. Необходимость модификации связана с невозможностью в Windows установить в Locale кодовую страницу UTF-8. В проекте http://www.rtsdd.ru/gnat gpl 2017 building up mingw64.aspx http://www.rtsdd.ru/gnat gpl 2017 building up mingw64.aspx есть пакет AdaCurses, который является простым переносом пакета Ada95 дистрибутива ncurses-6.0 (создан правильный .gpr файл, а все остальные исходники остались неизменными). Пакет AdaCursesW -- UNICODE-вариант пакета AdaCurses, а потому именно ncurses. Теперь насчет пакета readline, -- он просто завит от ncurses, и в нём та же проблема с кодовой страницей UTF-8. Но в readline есть и другая проблема. Для синхронизации обработчиков событий в readline используется механизм "select" для регулярных файлов, каналов (pipe), входных и выходных потоков терминала, а в Windows этот механизм доступен только для сетевых сокетов. Поэтому при применении пакета readline нужно моделировать этот механизм, а это большая заморока. С уважением и наилучшими пожеланиями, Сергей Дюков. Волжский. [Non-text portions of this message have been removed]
Здравствуйте, Сергей! >Пакет AdaCursesW -- UNICODE-вариант пакета AdaCurses, а потому именно ncurses. У PDCurses программный интерфейс совместим, поэтому если не получается с одним, можно до некоторой степени заменить другим. > PDCurses is a public domain curses programming library for DOS, > OS/2, Windows, X11 and SDL2. While development of the original > curses library halted in the mid-1990s, the development of ncurses > and PDCurses continued. PDCurses implements most of the functions > available in the original X/Open and System V R4 curses. То есть, сам ncurses — не оригинален в своём API. И AdaCursesW можно перебазировать. То есть, поддержка Windows в PDCurses началась гораздо раньше. Юникод там есть. Может быть, там всё не так плохо, как в ncurses. > Теперь насчет пакета readline, -- он просто завит от ncurses, и в нём > та же проблема с кодовой страницей UTF-8. Дело не в конкретном пакете, а в API, которое реализуют и другие указанные пакеты по тому же принципу взаимозаменяемости. Я смутно припоминаю, что WinEditLine я успешно использовал, но не уверен, была ли это Ада. WinEditLine работает с консолью Windows напрямую. Меня смущает, не могут ли быть конфликты, если использовать сразу две библиотеки без согласования их друг с другом. Когда на позиксе одно через другое, то они согласованы. А когда на Windows обе лезут в общую консоль… вот смущает этот момент. Может быть, Linenoise NG через PDCurses пустить или какой-то аналогичный хитрый вариант подружить одно с другим. С уважением, Левашев Иван, Барнаул -- If you want to get to the top, you have to start at the bottom
Здравствуйте, Иван! И ncurses и readline это posix пакеты скомпилированные под MINGW, и работают почти так же как в Linux или Cygwin, с этим всё в порядке. Проблема в том, что они используют сишные функции для преобразования char* в wchar t* и наоборот, а правила преобразования берутся из локали, а потому под Windows char* -- это всё что угодно, только не UTF-8. На сомом деле, библиотеку AdaCursesW перенести на другие платформы гораздо проще, чем приспособить её под Windows. С уважением и наилучшими пожеланиями, Сергей Дюков. Волжский. [Non-text portions of this message have been removed]
Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти