Как сделать так что бы в консольных прогах отображался правильно русский язык?
Torpedo 21:58 16.06.2008
Точно не скажу, но для перевода символов из кодировки консоли и обратно служат функции CharToOem и OemToChar, модуль winuser
I.C.E. 22:15 16.06.2008
Сообщение от Torpedo:
Точно не скажу
можно кусок исходника? так не очень понятно(
Part!zan 22:42 16.06.2008
I.C.E., меняй локаль консоли, а метод Torpedo извращенский. Подробности в мсдн.
I.C.E. 08:39 17.06.2008
Part!zan, как ее поменять то?
Part!zan 19:40 17.06.2008
I.C.E., SetConsoleOutputCP
I.C.E. 09:05 18.06.2008
Вот что он мне пишет:
Изображения
p51x 15:07 18.06.2008
А посмотреть, что она в модуле Windows подключить его?
I.C.E. 22:11 18.06.2008
Вот что получается...
Не работает...
Выложите пожалуйста подобный исходник где раотает все... Изображения
Pengvin 23:21 18.06.2008
Ну писец. Я не знаю как сейчас это делается, а в свое время по большинству вопросов я консультировался с оффлайн версией http://delphiworld.narod.ru/ а не бежал на форум постить свой вопрос. Там есть статья, которая так и называется Русификация консольных приложений в Delphi в разделе ОС и Железо. И я думаю на гугле еще никого не банили. Выкладывать исходиник не буду из соображений той же самой лени, которая свойственна всем людям.
Изображения
Part!zan 23:39 18.06.2008
Pengvin, да тут на 90% тем с вопросами можно найти ответ в гугле... Но людям кажется проще неизветно сколько ждать ответ на форуме, чем полчаса погуглить.
Pengvin 00:03 19.06.2008
Part!zan, ды это элементарная лень и возможно немного жадности. Траффик с форума для многих сетей бесплатный. Написал свой вопрос и идешь своими делами заниматься. А кто-то в это время допустим потратит минут 10-20 своего времени и пару десятков мб трафика, найдет и ответит. С одной стороны долго ждать, с другой простота реализации и минимальные затраты личной энергии и времени.
Nebel 01:30 19.06.2008
Проблемо в том что в делфийском компиляторе используется Windows-1251, а запущенное приложение использует кодовую страницу Dos.
Мона решить проблемку так:
делаем функцию
function Rus (s: string): string;
var
i: integer;
begin
for i:=1 to length(s) do
case s[i] of
'А'..'п' : s[i] := Chr(Ord(s[i]) - 64);
'р'..'я' : s[i] := Chr(Ord(s[i]) - 16);
end;
Rus := s;
end;
Затем используем, например так:
...
writeln(Rus('привед'));
...
I.C.E. 13:44 19.06.2008
Nebel, ну эт все кривые способы... Знаю что есть на прямую как то... Только как хз вобще((
Pengvin, можешь выложить модуль который у тебя на скрине? "enconsole.pas"
Part!zan 21:41 19.06.2008
Сообщение от Pengvin:
пару десятков мб
Эт ты загнул... Пару мб еще можно наскрести, да и то, в особо запущенных случаях.
Constantine 15:13 22.06.2008
SetConsoleOutputCP и кажется SetConsoleCP
Правда, помню что на моем компе все равно не работало. Подозреваю, что виноват был PuntoSwitcher.
А насчет "кривых" методов ты не прав. На безрыбье и рак рыба, так хотя бы работает.
А вообще, чем тебя английский-то не устраивает?))))