Перейти к содержанию
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 пользователей онлайн

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