![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Консольное приложение - косой вывод кириллицы на экран [D5, WinXP]
Вольный Стрелок © (2005-07-13 12:50:00)Время от времени возвращаюсь к этой проблеме, но так и не догоняю, что делать.
Пробовал SetConsoleOutputCP - переключает вроде (по крайней мере, об это сообщает GetConsoleOutputCP), но на экране все равно кракозябры.
Пробовал SetConsoleCP - эффект аналогичный. Что ж и в каких комбинациях вызывать, чтоб кириллица нормальная была в консоли?
Вольный Стрелок (2005-07-14 12:48:00) [1]снова up
DiamondShark (2005-07-13 18:42:00) [2]
> Вольный Стрелок © (13.07.05 15:30) [12]
Значит в разных версиях винды по разному. У меня 2000.
Вольный Стрелок (2005-07-13 18:37:00) [3]вижу, народ идей больше не имеет :(
может, хоть на [11] что-то скажете?
Вольный Стрелок (2005-07-13 17:21:00) [4]up
Вольный Стрелок (2005-07-13 15:30:00) [5]2 DiamondShark
только что ставил эксперименты и понял, что у меня не совсем так, как в [6]
1. при полноэкранном режиме тоже работает корректно при Lucida Concole
2. даже без Lucida (просто точечный шрифт) SetConsoleOutputCP ведет себя правильно в полноэкранном режиме
3. при переходе из полноэкранного в оконный при точечном шрифте уже правильно выведенное на консоль сообщение остается в нужной кодировке, а вот новое - увы, плющит
2 Anatoly Podgoretsky
Из п.3 можно сделать вывод, что проблема в самой SetConsoleOutputCP, а не в знакогенераторе.
Вольный Стрелок (2005-07-13 13:58:00) [6]Кстати, про шрифт консоли. Можно ли к ней прикрутить другой моноширинный шрифт, а не только Lucida? И как?
Вольный Стрелок (2005-07-13 13:52:00) [7][5]
Спрашиваю. Ведь для того и форум, так?
Просто в одном из примеров видел именно применение SetConsoleOutputCP для этой цели, но у меня что-то не так себя ведет, как там описано...
[9]
что значит, "где возможно"? критерии возможности какие?
И почему знакогенератором ОС не занимается? Драйвер видюхи должен? Дык, тогда все равно ос ему команды должна давать.
Anatoly Podgoretsky (2005-07-13 13:34:00) [8]DiamondShark © (13.07.05 13:31) [8]
Для преобразований, там где это возможно.
DiamondShark (2005-07-13 13:31:00) [9]и нафига тогда SetConsoleOutputCP ?
Anatoly Podgoretsky (2005-07-13 13:20:00) [10]DiamondShark © (13.07.05 13:13) [6]
В полноэкранном требуется перепрограммирование знакогенератора, ОС этим не занимается.
DiamondShark (2005-07-13 13:13:00) [11]Опытным путём установлено, что SetConsoleOutputCP даёт заявленый эффект лишь при условии, что:
- консольное приложение не в полноэкранном режиме;
- для окна консоли установлен шрифт Lucida Console.
Anatoly Podgoretsky (2005-07-13 13:08:00) [12]Ты нас спрашиваешь?
Вольный Стрелок (2005-07-13 13:04:00) [13]а что тогда OEM-defined character set?
и нафига тогда SetConsoleOutputCP ?
Alexander Panov (2005-07-13 12:59:00) [14]Вольный Стрелок © (13.07.05 12:57) [2]
но консоль не обязана быть в 866 кодировке
а CharToOEM не переводит в 866 кодировку.
Вольный Стрелок (2005-07-13 12:57:00) [15]но консоль не обязана быть в 866 кодировке
я хочу сделать, чтоб вне зависимости от CP консоли на ней всегда выводилось в нужной кодировке
Digitman (2005-07-13 12:55:00) [16]var
s: String;
..
s := 'КИРИЛЛИЦА';
CharToOEM(pchar(s), pchar(s));
writeln(s);