Перейти к содержанию
Fire Monkey от А до Я
  • 0

MessageDlg Android и русская кодировка


walexw

Вопрос

Я извиняюсь, если не в ту тему пишу...

Вопрос такой: в FireMonkey приложении использую MessageDlg.

На Андроидном устройстве русские буквы в сообщении отражаются ромбиками со знаками вопроса.

Это как-то лечится?

Если кто знает, подскажите или дайте ссылку.

Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Текстовые фразы для MessageDlg создаю таким макаром:

 

AnsiString str = "русский текст";

 

Его вставляю в сообщение.

В windows это работает, поэтому стал использовать (пишу первое приложение под firemonkey).

Ну и налетел на грабли с Андроидом, поэтому собственно и спрашиваю.

 

Ошибку свою понял, надо ansistring переводить в юникод, затем использовать.

 

Спасибо.

Ссылка на комментарий
  • 0

Замена AnsiString на String (и на UnicodeString) ничем не помогла. На экране появляются ромбики со знаками вопроса.

Уже час подбираю синтаксис перевода стринга в юникод, опять грабли, что ни подставлю, компилятор не пускает.

Может есть у кого работающее решение перевода в юникод.

Ссылка на комментарий
  • 0

проект с ошибкой выложите тогда нагляднее будет понять что к чему. ибо код - 

 

procedure TMainForm.TryClose;
begin
  MessageDlg('Выйти из программы?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0,
    procedure(const AResult: TModalResult)
    begin
      if AResult = mrYes then
      begin
       Application.Terminate;
      end;
    end);
end;
 
показывает на русском текст как на андроиде так и на винде. 
Ссылка на комментарий
  • 0

По совету krapotkin и haword, собрал новый проект, из одной кнопки и одной строки кода

 

void __fastcall TForm1::Button1Click(TObject *Sender)
{

   MessageDlg("русский текст", TMsgDlgType::mtWarning, TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0, 0);

}
 

Если 'русский текст' пишу в одинарных кавычках, компилятор пишет: Character constant too long (or empty)

Пропускает только с двойными.

 

Скриншот планшета с результатом не смог вставить в сообщение (видимо что-то со скриптом форума)

 

Вот ссылка на скриншот:

http://www.zigsite.ru/Screenshot.jpg

 

Поэтому и просил помочь с переводом в юникод.

 

Проект на C++ builder. RAD EX 10

 

С русскими надписями и русской БД проблем нет, только с системными сообщениями.

Ссылка на комментарий
  • 0

А если так?

MessageDlg(L"русский текст",...

void __fastcall TForm1::Button1Click(TObject *Sender)
{

   MessageDlg(L"русский текст", TMsgDlgType::mtWarning, TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0, 0);

}
Изменено пользователем Kitty
Ссылка на комментарий
  • 0
  • Модераторы

А если так?

MessageDlg(L"русский текст",...

void __fastcall TForm1::Button1Click(TObject *Sender)
{

   MessageDlg(L"русский текст", TMsgDlgType::mtWarning, TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0, 0);

}
Объясните не посвящённым в с++, что значит L?
Ссылка на комментарий
  • 0

Enabling C++ Applications for Unicode:

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Enabling_C%2B%2B_Applications_for_Unicode

 

String constants, such as "string constant", are still narrow (char*), so you cannot pass them to functions of RAD Studio frameworks and libraries that take PChar as you did before. You can pass the constant to functions of RAD Studio frameworks and libraries with a PChar parameter if you prefix the constant with L, as in:
L"string constant"

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...