Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt4] QString преобразование в wchar_t*, Проблемы с преобразованием  
V
    Опции темы
Girin
Дата 31.3.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Нужно перевести корректно   кутешную строку в wchar_t* . 
Преобразование через стльную строку : 
Код
const wchar_t * temp=str.toStdWString().c_str();
 работает почему то через раз  при тестовых запусках программы, т.е. иногда возвращается пустая строка. Хотя вводимые данные одни и те же при каждом запуске. А прямое преобразование :
Код
wchar_t * temp=reinterpret_cast<wchar_t *>(fileName.toLocal8Bit().data());

не работает вообще ...
PM   Вверх
Denjs
Дата 31.3.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



делал так:
Код

int t_seriallink_otpd::Open(QString DevPath_)


.... бла-бла-бла ...

    // Win:
    #elif defined (Q_WS_WIN)
        WCHAR buf[2048];
        //qDebug() << "---> entering: " << "Open() " << DevPath_;
        buf[DevPath_.toWCharArray((wchar_t*)&buf)]=0;
            //to_wchar_t(DevPath_,&buf,2048);
    
        Serial_Handle = CreateFile(
                (const WCHAR*)&buf
                ,GENERIC_READ | GENERIC_WRITE  // Read-Write access
                ,0 // Cannot be shared ( else- FILE_SHARE_READ | FILE_SHARE_WRITE )
                ,NULL // Security Attributes
                ,OPEN_EXISTING // Open existing file
                ,FILE_ATTRIBUTE_NORMAL || FILE_FLAG_WRITE_THROUGH // | FILE_FLAG_NO_BUFFERING // Auto flush
                ,NULL // Template File
                );
.... и далее по тексту...

PM MAIL   Вверх
Girin
Дата 31.3.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Спасибо огромное ! Теперь все нормально преобразуется 
PM   Вверх
SABROG
Дата 31.3.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А можно вопрос ? Для чего в Qt использовать WinApi CreateFile ? Для обращения к COM'порту чтоль ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Denjs
Дата 31.3.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



Цитата(SABROG @ 31.3.2008,  12:07)
А можно вопрос ? Для чего в Qt использовать WinApi CreateFile ? Для обращения к COM'порту чтоль ?

оно самое. 

PM MAIL   Вверх
just_geek
Дата 1.4.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



под виндой и такое сработает:
wchar_t *arr = (wchar_t*)str.utf16();
PM MAIL   Вверх
SABROG
Дата 1.4.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А нафиг вообще так извращаться с кодировкой ? Можно юзать CreateFileA, чтобы текст в обычной кодировке передавать.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
archimed7592
Дата 4.4.2008, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Оффтопик: есть опенсурс либа для работы с COM портом в Qt.


Цитата(Girin @  31.3.2008,  10:52 Найти цитируемый пост)
 работает почему то через раз  при тестовых запусках программы

Конечно... ибо нужно писать так:
Код

std::wstring wstr = str.toStdWString();
const wchar_t * temp= wstr.c_str();
// ... указатель temp станет невалидным("станет работать через раз" :)) в тот же момент, когда уничтожится объект wstr



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Denjs
Дата 6.4.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



>>Оффтопик: есть опенсурс либа для работы с COM портом в Qt.
да,... QExtSerialPort ...(?) но я об этом узнал когда уже поздно было ... и теперь их две (библиотеки)... ^_^

обе опенсорсных и обе под QT ) моя правда не только для com-порта...


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0742 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.