Некорректный вывод в консоль Паскаль программы
Здравствуйте.
Есть программа написанная на Turbo Pascal, и работающая в текстовом режиме. В консоли Windows 80х25 всё работает хорошо. Я хотел её ещё скомпилировать под Linux используя Free Pascal. Скомпилировать удалось, но выводит информацию в терминале криво. Где то на 45-50м символе строка обрывается и переносится на другую/или вообще не переносится, причём последний символ в месте разрыва либо исчезает либо крякозябром отображается. В остальном вроде нормально функционирует. Терминал в Linux достаточно широкий (90 символов), а моя строка занимает макс. 65. Т.е. места ещё хватает. Для вывода используются функции Write,WriteLn. Кодировка UTF-8, русские символы. В чём может быть проблема и как решить? Есть идея TextMode пробовать, хотя не уверен что поможет. |
Textmode испытал, как и думал - не помогло.
TextMode(CO80) продлил строку аж на 2 символа! CO80+Font8x8 - вообще не выводит, ещё пустые строки вставляет. Проверял значение константы LastMode - она равна 3, т.е. инициализируется нужный режим 80х25, но строка почему-то переносится :( Неужели никто не может подсказать, как это можно исправить? :dont-know |
Скорее всего проблема с обработкой UTF-8. Один символ UTF-8 воспринимается writeln как 2 символа ASCII вот и выводятся чудеса. Посмотрите документацию по вашей версии FPC, возможно там Unicode вобще не поддерживается.
|
Цитата:
Версия 2.2.4 В документации написано, что есть поддержка UTF8, причём по умолчанию. Может мне в 1251 сделать, но надо как-то на время выполнения программы задать эту кодовую страницу в терминале. Как это сделать? SetConsoleOutputCP - это только на Win-платформах кажется работает. |
Время: 19:55. |
Время: 19:55.
© OSzone.net 2001-