LINUX.ORG.RU

[консолеинтерфейс][ascii?]кракозябры и непослушный курсор


0

0

В общем надо по долгу службы (студентота, да) сделать интерфейс на ncurses crt на паскале.

Вроде как всякие свистящие рамки выводятся псевдографикой. Но, например, в мане к заданию клянутся, что char(196) - длинная полоска. fpc с терминалом клянутся, что это рунообразный знак вопроса. Если с кодировкой что-то не то, то как его получить?

Пруф:http://onemove.ru/uploads/images/100319/2a9f6a81f4c667a2ae7cc446a3db8b3d/u_7060.png

Что делать и кто виноват?

btw, как курсор в ссылку отправить - что-то с gotoxy он разговаривать не хочет?


>интерфейс на ncurses crt на паскале.

Досовский CRT (ведь про него в наших университетах речь идет) - это совсем не то же самое, что линуксовый терминал. Терминал обычно работает с текстом в utf-8 и с управляющими последовательностями. Управляющая последовательность начинается с ESC (символ с кодом 27). Досовский CRT работает с однобайтовыми символами в какой-либо из ASCII-совместимых кодировок (в нагих университетах речь идет про cp-866).

char(196) воспринимается терминалом как начальный или срединный байт символа в utf-8. Последовательность таких байтов в итоге дает некий «символ».

Псевдографику надо выводить как символы в utf-8, либо рисовать в ncurses. Курсор управляется либо управляющими последовательностями напрямую, либо через ncurses (он тоже посылает управляющие последовательности).

dmitry_vk ★★★
()

Верить стоит только глазам своим. http://paste.org.ru/?06n1j6 - здесь сгенерированный в своё время список кодов символов в кодировке 866 - в UTF-8 символы, внезапно, но увы, другие.
У меня gotoxy работает, так что проблема скорее всего у вас. Пожалуйста, опишите проблему подробнее.

Northsoft ★★
()

http://www.filehoster.ru/files/ew3136 - оригинальный файл в кодировке 866.
Да, и ещё.

[northsoft@host asm]$ iconv -f ibm866 table.txt | grep 196; iconv -f ibm866 table.txt | grep 196 | hexdump
196: '─'
0000000 3931 3a36 2720 94e2 2780 0a0d
000000c
[northsoft@host asm]$
Может быть, вам эта информация поможет.

Northsoft ★★
()
Ответ на: комментарий от mannaz

> Поставь Turbo Pascal в DOSBox и не парь мозг
Поддерживаю. Если хочется каноничности - можно поставить себе MS-DOS на VirtualBox - мой выбор.

Northsoft ★★
()

Просто хочется как-то одними write'ами нарисовать полосочку, всего-то, без некрофилии с досом под виртуалбоксом :/

если насильственно писать write('─') он внезапно строку где-то после символов 45 переводит: http://onemove.ru/uploads/images/100319/d0bff60818cea4f7ad397cd133034860/u2_0735.png

uGin
() автор топика
Ответ на: комментарий от Northsoft

В том-то и дело, что надо его за пределы выкинуть, чтобы пока он в бесконечном цикле нажатие ожидал, не мигало ничего - вспомните любую нкурсес-программу - mc, конфигуратор ядра, етс. - Вы пока думаете, какой пункт выбрать, Вам никто нагло не мигает курсором в произвоьлной части экрана.

uGin
() автор топика
Ответ на: комментарий от Northsoft

Верить стоит только глазам своим. http://paste.org.ru/?06n1j6 - здесь сгенерированный в своё время список кодов символов в кодировке 866 - в UTF-8 символы, внезапно, но увы, другие.

Northsoft (19.03.2010 16:56:54)

Этот список не полный. На самом деле в кодировке Unicode, UTF-8 есть все коды кодировки 866 начиная от 0 до 255. Т.е. и значки рожиц, карт и т.д..

greatpower
()
Ответ на: Not implemented on unixes от uGin

Полагаю, тема исчерпана. uGin, не забывайте, в какой кодировке работает терминал. Если вы хотите убрать курсор - не стоит его прятать за экран, на всё есть свои методы. Увы, они не всегда кроссплатформенны. greatpower, спасибо вам за помощь и да прибудет с вами сила. uGin, успехов вам в сдаче и учёбе. Всем спокойной ночи.

Northsoft ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.