Russian Qt Forum
Ноябрь 24, 2024, 09:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с функциями WinAPI  (Прочитано 3616 раз)
IUnknown
Гость
« : Февраль 07, 2007, 23:42 »

Хочу получить имя файла без разширения и для этого хочу использовать функцию из бибилиотеки shlwapi PathRemoveExtension.
Делаю так:
{
  QString m_fileName = "c:\\windows\\readme.txt";
  LPTSTR str = (LPTSTR)m_fileName.toStdWString().c_str();
  ::PathRemoveExtension(str);
  return QString::fromStdWString(str);
}
В результате получаю строку с крякозябликами. Использую VS2005, Qt 4.2.2 из qt.tttxp.ru.
В чем проблема? Заранее благодарен за помощь?
Записан
Вячеслав
Гость
« Ответ #1 : Февраль 07, 2007, 23:56 »

Вопрос в лоб - а на кой stl прикручивать ? чем toLocal8Bit или toAscii не устраивает ? Собственно тот объект из которого ты получаешь буфер будет удален после выполнения метода c_str() - собственно указатеь висит в воздухе ... Копируй строку во времянку .. должно полегчать Подмигивающий
Записан
IUnknown
Гость
« Ответ #2 : Февраль 08, 2007, 00:57 »

QString tmp = path;
LPTSTR str = (LPTSTR)tmp.toStdWString().c_str();
::PathAddBackslash(str);
return QString::fromStdWString(str);

Получаю аналогичный результат, а stl для того что не знаю как из QByteArray в LPWSTR перейти.
Очень бы хотелось примерчик кода с комментариями. Заранее благодарен.

добавлено спустя 7 минут:

 Странно, а в MinGW этот пример вроде бы без проблем прошел?! Но мне нужно его сделать в VS2005.
Записан
Tonal
Гость
« Ответ #3 : Февраль 08, 2007, 11:09 »

Результат функций .toStdWString() и .c_str() гарантированно живёт до окончания вычисления полного выражения, в котором они использованы.
Дальше с ним (результатом) может произойти всё что угодно.
Короче, если используешь такие функции, надо скопировать куда-то результат, или сразу передать.

А чем тебе QFileInfo не подходит?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.