Проблема с преобразованием QString |
Здравствуйте, гость ( Вход | Регистрация )
Проблема с преобразованием QString |
Bat |
27.10.2009, 13:42
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.10.2009 Пользователь №: 1184 Спасибо сказали: 0 раз(а) Репутация: 0 |
В приложении требуется создание архивов с вложенными папками. Работает все исключительно под windows. Поэтому пошел по пути наименьшего сопротивления, использовал 7zip. В предыдущей версии QT все было собрано, и года 2 работало без проблем. Недавно понадобилось внести изменения. Поставил версию 4.5. Победил остальные проблемы, но вот с вызовом собственно 7zip проблемы.
QString zipExePath = QDir::convertSeparators(qApp->applicationDirPath()+"/7za.exe"); SHExecInfo.lpFile = zipExePath; выдает error C2440: '=' : cannot convert from 'QString' to 'LPCSTR' - да вообще даже простой printf(str), если str типа QString - ту же ошибку выдает. Может сконфигурировал что не так? вариант SHExecInfo.lpFile = zipExePath.toAscii().constData(); нормально компилится, но потом в LpFile оказывается строка вида "юююююююююююююююююююююююююююююю" - много маленьких русских букв ю. Это toAscii() такое возвращает. Как быть? |
|
|
BRE |
27.10.2009, 13:58
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Нужно разобраться со строками (QString) в Qt.
Сначала преобразуем строку к QByteArray используя или toLatin1, или toAscii, или QTextCodec (в зависимости от того, какую строку хотим получить). Затем получаем указатель на данные из QByteArray.
|
|
|
Bat |
27.10.2009, 14:19
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.10.2009 Пользователь №: 1184 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо, в таком виде заработало. Непонятно правда чем
SHExecInfo.lpFile = zipExePath.toAscii().constData(); хуже был. |
|
|
BRE |
27.10.2009, 14:25
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
vanner |
27.10.2009, 23:55
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 27.8.2009 Пользователь №: 1025 Спасибо сказали: 1 раз(а) Репутация: 0 |
Да и вообще, можно и запуск процесса 7Zip было бы сделать через QProcess, который понимает QString и является кросплатформенным.
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 13:47 |