crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Строка в DLL
kalifriki
  опции профиля:
сообщение 6.2.2010, 22:42
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 6.2.2010
Пользователь №: 1448

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток. Проблема такая:
Я создал динамическую библиотеку, с единственной функцией, которая возвращает QString.
В своей программе подключаю эту библиотеку и вызываю этот метод. Если строка в библиотека набрана английскими символами все нормально, но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.2.2010, 23:15
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kalifriki @ 7.2.2010, 1:42) *
но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
а как это (наличие строки не в Lain1) реализовать без библиотеки, а в своей программе знаешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kalifriki
  опции профиля:
сообщение 6.2.2010, 23:22
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 6.2.2010
Пользователь №: 1448

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 6.2.2010, 23:15) *
Цитата(kalifriki @ 7.2.2010, 1:42) *
но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
а как это (наличие строки не в Lain1) реализовать без библиотеки, а в своей программе знаешь?

Не совсем понял :)
У меня строка должна быть обязательно в библиотеке (там помимо нее, конечно есть и функции, но сейчас дело их не касается). Как её получить в основной программе и вывести, например, на экран в нормальном виде, не кракозябрском.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.2.2010, 23:46
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


kalifriki, что-нибудь слышал про функции:
tr()
trUtf8()
codecFoTr()
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kalifriki
  опции профиля:
сообщение 6.2.2010, 23:55
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 6.2.2010
Пользователь №: 1448

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 6.2.2010, 23:46) *
kalifriki, что-нибудь слышал про функции:
tr()
trUtf8()
codecFoTr()
?

Слышал, погуглил, не понял как это может мне помочь.
CODE

lib.setFileName(fileName);
lib.load();
typedef QString (*Name) ();
if (name) {
QString temp = name();
setWindowTitle(temp);
}

В заголовке получаю кракозябры.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 6.2.2010, 23:58
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));


как пример

Сообщение отредактировал Rocky - 6.2.2010, 23:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.2.2010, 0:14
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kalifriki @ 7.2.2010, 2:55) *
Слышал, погуглил, не понял как это может мне помочь.
самый простой способ, но и самый плохой:
где-то в коде строка с не латиницей:
QString s = tr("Привет мир");
, предположим, что кодировка этого файла - CP-1251 (Windows-1251)
тогда в функции main:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kalifriki
  опции профиля:
сообщение 7.2.2010, 1:33
Сообщение #8


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 6.2.2010
Пользователь №: 1448

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 7.2.2010, 0:14) *
Цитата(kalifriki @ 7.2.2010, 2:55) *
Слышал, погуглил, не понял как это может мне помочь.
самый простой способ, но и самый плохой:
где-то в коде строка с не латиницей:
QString s = tr("Привет мир");
, предположим, что кодировка этого файла - CP-1251 (Windows-1251)
тогда в функции main:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));


Большое спасибо. С проблемой разобрался :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.6.2022, 12:07