Псевдографика в Linux... Способы реализации?
Модератор: Модераторы
Псевдографика в Linux... Способы реализации?
Собственно говоря сабж,..
Просто вспоминая давно минувшие вмемена MS-DOS (где всевозможные рамки чертились на основе символьной графики) хотелось бы узнать, как подобное реализуется в связке FPC+Linux.
Просто вспоминая давно минувшие вмемена MS-DOS (где всевозможные рамки чертились на основе символьной графики) хотелось бы узнать, как подобное реализуется в связке FPC+Linux.
А что мешает использовать ту же методу?
Можно ещё ncurses использовать. Это даже лучше...
Можно ещё ncurses использовать. Это даже лучше...
to B4rr4cuda
>>... что мешает использовать ту же методику?
Просто раньше я получал псевдографический символ нажатием определенной комбинации клавиш, например сочетание Alt+205 давало двойную горизонтальную черту, а Alt+179 - закрашеный символ (что-то вроде сетки). Как эти символы получить в IDE под Linux? Быть может есть их представление в шестнадцатеричной системе?
>>... что мешает использовать ту же методику?
Просто раньше я получал псевдографический символ нажатием определенной комбинации клавиш, например сочетание Alt+205 давало двойную горизонтальную черту, а Alt+179 - закрашеный символ (что-то вроде сетки). Как эти символы получить в IDE под Linux? Быть может есть их представление в шестнадцатеричной системе?
Andreich
Alt+205:=#205;
Alt+179:=#179;
По-моему всё достаточно просто.
Alt+205:=#205;
Alt+179:=#179;
По-моему всё достаточно просто.
Нет, не все так просто... Если в программе я пишу Write(#205); то в консоли такой символ отбражается как вопрос в ромбике!
Быть может что с кодировкой?
Быть может что с кодировкой?
Andreich писал(а):Быть может что с кодировкой?
Совершенно верно. Надо указывать те коды символов, кодировка которых стоит в Вашей системе.
Добавлено спустя 5 минут 43 секунды:
Вот, можно посмотреть нужные коды:
Код: Выделить всё
Var
i: integer;
Begin
For i:=0 To 255 Do
Begin
Write(i:3, '=',Chr(i), ' ');
If i mod 15 = 0 Then
WriteLn;
End;
End.Я уже пробовал делать подобное, но вот незадача - нормально отображаются только первые 128 символов. Первая половина кодовой таблицы отвечающая за латинские буквы и спец.символы (~!"№;%:?*) отображается, а вот вторая половина (нац.кодировка) не работает,.. все теже вопросы. Работаю в Ubuntu 8.04, UTF-8.
В UTF-8 кодировка русских и любых других нелатинских символов далеко выходит за пределы первого байта. Так что лучше посмотреть таблицу перекодировки для UTF-8, иначе придётся перебирать полный четырёхбайтный диапазон...
Запусти charmap и посмотри коды символов, которые тебе нужны...
Да уж, с предложением про charmap не поспоришь!
Часть символов нашел,... (их там реально много!).
Если получится что-нибудь интересное - обязательно отпишусь!
Добавлено спустя 16 часов 31 минуту 28 секунд:
В ходе экспериментов возникла следующая проблема: при попытке вывести подряд более 25 символов строка обрывается и вывод продолжается со следующей строки.... Причем это происходит лишь для символов псевдографики, для обычных символов (123...ABCdef....) все нормально! В чем загвоздка? Кто-нибудь с таким сталкивался?
Часть символов нашел,... (их там реально много!).
Если получится что-нибудь интересное - обязательно отпишусь!
Добавлено спустя 16 часов 31 минуту 28 секунд:
В ходе экспериментов возникла следующая проблема: при попытке вывести подряд более 25 символов строка обрывается и вывод продолжается со следующей строки.... Причем это происходит лишь для символов псевдографики, для обычных символов (123...ABCdef....) все нормально! В чем загвоздка? Кто-нибудь с таким сталкивался?
Да вроде бы нет никаких управляющих символов.... Использую обычный WriteLn.
В качестве символа - горизонтальная черта (взятая из Character Map).
Визуально проблема выглядит следующим образом: http://www.danilov.hotmail.ru/win_error.gif (4.9 Kb).
В качестве символа - горизонтальная черта (взятая из Character Map).
Визуально проблема выглядит следующим образом: http://www.danilov.hotmail.ru/win_error.gif (4.9 Kb).
А код, её выводящий, увидеть можно?
Код, проще не придумаешь!
Добавлено спустя 5 минут 8 секунд:
Сам символ в таблице сопровождается следующими коммертариями:
-------------------------------
U+2500 BOX DRAWINGS LIGHT HORIZONTAL
General Character Properties
Unicode category: Symbol, Other
Various Useful Representations
UTF-8: 0xE2 0x94 0x80
UTF-16: 0x2500
C octal escaped UTF-8: \342\224\200
XML decimal entity: ─
Annotations and Cross References
Alias names:
• Videotex Mosaic DG 15
Код: Выделить всё
program new;
uses crt;
Begin
ClrScr;
Write('─────────────────────────────────────');
end.
Добавлено спустя 5 минут 8 секунд:
Сам символ в таблице сопровождается следующими коммертариями:
-------------------------------
U+2500 BOX DRAWINGS LIGHT HORIZONTAL
General Character Properties
Unicode category: Symbol, Other
Various Useful Representations
UTF-8: 0xE2 0x94 0x80
UTF-16: 0x2500
C octal escaped UTF-8: \342\224\200
XML decimal entity: ─
Annotations and Cross References
Alias names:
• Videotex Mosaic DG 15
Andreich писал(а):program new;
uses crt;
Begin
ClrScr;
Write('─────────────────────────────────────');
end.
Это у меня вполне корректно выводит линию. Возможно, сам того не заметив, ты в середине строки вписал неотображаемый символ. Попробуй открыть исходник vim -ом, тот отображает все.
