Конференция "FreePascal" » Проблема с кирилицей на Lazarus под WinCE [Win32, другое]
 
  • Володя (30.08.11 14:32) [0]
    Создаю на лазарусе проект для терминала сбора данных под WinCE. Проблема в неправильном отображении принимаемых данных (кодировка). Т.е. если я непосредственно в коде пишу, например: MsgBox('Привет',0), или
    Label1.Caption:='Текст по русски'
    то все Ок. Но если так показываю данные, принимаемые по сети (WiFi), т.е.

       var Buf:array [0..1023] of char;
      ....
       r:=recv(sock,@buf,sizeof(buf),0);
       Label1.Caption:=buf;


    то имею отображение с неправильной кодировкой, т.е. латиница отображается правильно, а вместо кирилицы вижу восточноевпропейские символы с точками, кружечками и т.д.
    Из документации по Лазарусу я понял что он все строки (string) хранит в UTF8 и производит автоматическое преобразование из ansi (наверное такое происходит в Label1.Caption:=buf;). Однако на WinCE девайсе установлена английская локаль (изменить на рус нет возможности, в панели управления только англ, франц, и два китая) и соотв. такое преобразование происходит не правильно.
    Вопрос: как указать лазарусу что принимаемые данные в кодировке win1251 ? или как правильно преобразовать (показать) принятые строки?
  • Cobalt © (30.08.11 15:55) [1]
    Возможно, тебе стоит обратить внимание на функции kernel32.dll
    MultiByteToWideChar
    WideCharToMultiByte
  • Володя (30.08.11 17:22) [2]
    На msdn.microsoft.com об этих функция сказано

    Minimum supported client : Windows 2000 Professional
    Minimum supported server: Windows 2000 Server

    т.е. на WinCE они наверняка отсуствуют
  • Cobalt © (31.08.11 11:55) [3]
    Гугл всё ещё рулит.
  • xayam © (27.09.11 11:22) [4]
 
Конференция "FreePascal" » Проблема с кирилицей на Lazarus под WinCE [Win32, другое]
Есть новые Нет новых   [118696   +35][b:0][p:0.001]