Кодировка текста для основного меню

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Кодировка текста для основного меню

Сообщение Tango » 14.06.2013 11:55:03

Заметил такую особенность или фичу?

Основное меню программы создаётся на основной форме при запуске в run-time. Установка кодировки строк для его заголовком в UTF8 из cp1251 даёт крокозябры.
У всех так или я ошибаюсь?


Win 7 все.
Lazarus все версии.
Аватара пользователя
Tango
постоялец
 
Сообщения: 162
Зарегистрирован: 31.05.2012 17:07:30

Re: Кодировка текста для основного меню

Сообщение Лекс Айрин » 14.06.2013 12:45:23

Tango, текст примера в студию... возможно, не так подобрана функция перекодировки. Например, у меня работоспособен данный фрагмент (правда, не в рантайме)
Код: Выделить всё
Form1.Caption:=UTF8ToSys(MyFile)+'             LexEditor';
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Кодировка текста для основного меню

Сообщение Tango » 14.06.2013 13:05:03

Вот:

Код: Выделить всё
Function BaseToInterface(S: String): String;
Begin
  If UTF8Base then
    Result:=ConvertEncoding(S, GPT.ServerCodePage, DefaultSystemEncoding) // AnsiToUTF8(S)
  Else
    Result:=S;
End;

procedure AddSubItem(Caption, ItemName: String; ToMenu: Integer);
Begin
  If ToMenu<> - 1 then
  Begin
    FormData[CurrentForm].ToItem:=FormData[CurrentForm].Mainmenu.Items[ToMenu];
    FormData[CurrentForm].ItemMenu:=TMenuItem.Create(FormData[CurrentForm].ToItem);
    FormData[CurrentForm].ItemMenu.Name:=ItemName;
    FormData[CurrentForm].ItemMenu.Caption:=BaseToInterface(Caption);
    FormData[CurrentForm].ItemMenu.OnClick:=MenuAction.ClickMenu;
    FormData[CurrentForm].ToItem.OnClick:=nil;
    FormData[CurrentForm].ToItem.Insert(FormData[CurrentForm].ToItem.Count,
      FormData[CurrentForm].ItemMenu);
  End;
End;

Begin
  GPT.ServerCodePage:='cp1251';
  DefaultSystemEncoding:=GetDefaultTextEncoding;
End.


Если UseUTF = True и вот так DefaultSystemEncoding:='utf8'; то в меню кракозябры на Win7 32x. А на Win7 64х нормально, хотя может проблема в другом.
Аватара пользователя
Tango
постоялец
 
Сообщения: 162
Зарегистрирован: 31.05.2012 17:07:30


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 246

Рейтинг@Mail.ru