Страница 1 из 1

WriteConsoleOutputCharacter проблема c русским алфавитом

СообщениеДобавлено: 31.08.2010 15:27:36
fondreykus-1
Здравствуйте. Пользуюсь FreePascal в режиме Delphi compatible
Наткнулся вот на что: WriteConsoleOutputCharacter не хочет правильно отображать русский алфавит. Точнее, если написать следующее:
Код: Выделить всё
var 
  Wr: LongWord;
  P:_COORD;
  Output: Handle;
  Buff: Array[1..80] of Char;
begin
  Output:=GetStdHandle(STD_OUTPUT_HANDLE);
  P.x:=2;
  P.y:=2;
  Buff:='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
  WriteConsoleOutputCharacter(Output,@Buff,33,P,Wr);
end.

то половина букв будет просто проигнорирована, в строке будут пустые места. Причём с английским алфавитом такого не случается. Можно ли это как-нибудь "вылечить"? Заранее спасибо

Re: WriteConsoleOutputCharacter проблема c русским алфавитом

СообщениеДобавлено: 31.08.2010 15:45:59
Mr.Smart
Я так полагаю, что вы набираете текст программы в среде Lazarus, а как известно (с незапамятных времён) текст программы вводится в кодировке UTF-8. От сюда и грабли...

Re: WriteConsoleOutputCharacter проблема c русским алфавитом

СообщениеДобавлено: 31.08.2010 15:58:13
fondreykus-1
Я набираю текст в OEM редакторе FreePascal. Проблема в том, что WriteLn(Buff[1..33]) работает как надо, а WriteConsoleOutputCharacter выкидывает фокусы.

Re: WriteConsoleOutputCharacter проблема c русским алфавитом

СообщениеДобавлено: 31.08.2010 16:48:23
z.g
это известный баг консоли.
помогает:
1. установка консоли векторного шрифта.
2. использование WriteConsoleOutputCharacterW.
3. использование более других функций консоли для достижения требуемого эффекта.

Re: WriteConsoleOutputCharacter проблема c русским алфавитом

СообщениеДобавлено: 31.08.2010 17:35:32
fondreykus-1
Спасибо! Очень благодарен!