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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFile и длинные имена файлов в Виндоуз  (Прочитано 4253 раз)
Smogg
Гость
« : Январь 05, 2013, 08:27 »

На WinAPI все понятно: все системные функции работают только и исключительно с Юникодом.

А как заставить QFile читать файлы с мешаниной из русских, арабских, еврейских и пр. символами в пути, да еще и с пробелами?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Январь 05, 2013, 08:43 »

На WinAPI все понятно: все системные функции работают только и исключительно с Юникодом.

А как заставить QFile читать файлы с мешаниной из русских, арабских, еврейских и пр. символами в пути, да еще и с пробелами?
А в чем проблема.
QFile получает имя файла через QString, которая тоже хранит юникод.
Записан
Smogg
Гость
« Ответ #2 : Январь 05, 2013, 10:22 »

А в чем проблема.
QFile получает имя файла через QString, которая тоже хранит юникод.

Проблема в том, что я не знаю, как засунуть юникод в Qstring.
Код:
 QString file(L"c:/Qt/Мойстиль/حدالأنشطة.qss");

вываливается в :
C:\!Qt_Creator\trftuy\main.cpp:10: error: C2664: 'QString::QString(const QChar *)' : cannot convert parameter 1 from 'const unsigned short [46]' to 'const QChar *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

А если так:
Код:
QString file(QString::fromUtf16(L"c:/Qt/Мойстиль/حدالأنشطة.qss"));

То в дебаге креатора переменная file превращается в:
"c:/Qt/Мойстиль/حدالأنشطة.qss"

UPD: В студии все отображается и открывается корректно. В Креаторе - нет.
« Последнее редактирование: Январь 05, 2013, 10:58 от Smogg » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Январь 05, 2013, 10:27 »

Почитай про QTextCodec, там подробно все показывается.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Январь 05, 2013, 17:18 »

Смотрите tr() - QObject::tr() или QTextCodec::tr(),
а также QTextStream::setCodec(), это уже для работы с QFile при чтении/записи в файл Улыбающийся
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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