Поиск:

Ответ в темуСоздание новой темы Создание опроса
> русский путь к программе 
:(
    Опции темы
kuvshinka
Дата 17.2.2014, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня каталог windows-программы русскоязычен (например c:\папка1\MyProject) - это обязательно !!! из-за этого программа не собирается (не проходит qmake) и из-за этого же не находит файл:
например 
Код

   QFile myfile(QDir::currentPath()+"/директория1/file.cpp");

   if (myfile.exists())
     qDebug() << "exists" << "  " <<  QDir::currentPath();
   else
     qDebug() << "no file..." ; 

ответ будет "no file..." ...
Подскажите пож-та как можно решить проблему наличия русских символов в каталоге программы или при использовании таковых в самой windows-программе (например как в коде выше)?
PM MAIL   Вверх
math64
Дата 18.2.2014, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

QDir::currentPath()+QDir::separator() + tr("директория1") + QDir::separator() + "file.cpp";

Если исходики в UTF8, используется trUtf8().
Можно использовать QString::fromLocal8Bit() или QString::fromUtf8() соответственно.
PM   Вверх
bsa
Дата 18.2.2014, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



kuvshinka, проблему со сборкой возможно решить не получится.
PM   Вверх
kuvshinka
Дата 18.2.2014, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



math64: но и в QDir::currentPath() могут быть русские буквы...
PM MAIL   Вверх
math64
Дата 19.2.2014, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



kuvshinka, проблема в том, что когда вы пишете "директория1", для преобразования в строку по умолчанию используется кодировка latin1. Можно поменять кодировку по умолчанию с помощью методов QTextCodec::setCodecFor...()
QDir::currentPath() должен прамильно работать даже если в пути есть русские буквы.
Вот фрагмент исходников:
Код

        DWORD size = 0;
        wchar_t currentName[PATH_MAX];
        size = ::GetCurrentDirectory(PATH_MAX, currentName);
        ... /* здесь проверка на size > PATH_MAX */
        ret = QString::fromWCharArray(currentName);

Если возникает проблема с сборкой, не используйте русские буквы в исходниках, используйте tr("directory1") и подключите файл переводов.
Код

    <message>
        <source>directory1</source>
        <translation>директория1</translation>
    </message>


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

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

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


 




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


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

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