Название: Ошибка проверки пути на абсолютность на Linux. Отправлено: thewizard от Январь 31, 2013, 19:53 Здравствуйте.
Столкнулся с ошибкой при проверки абсолютности пути средствами Qt на Linux, если пусть начинается с символа двоеточия. Qt определяет такой путь, как абсолютный, что неверно для Linux. Вот минимальный код для воспроизведения: Код Данный код напечатает true для всех трёх способов. Версия Qt 4.7.0, Linux - Kubuntu 10.04.4 LTS, версия ядра 2.6.32-41-generic, x86_64. На более новых версиях Qt и Linux проверить сейчас нету возможности, но чуть позже обязательно это сделаю. Проблема заключается даже не в этих методах (их можно заменить на свой, благо это просто), а в том, что из-за этого метод QDir::cd() не работает правильно, если нам нужно перейти в папку, имя которой начинается с двоеточия. Дело в том, что в этом методе в начале проверяется не абсолютный ли путь, а потом путь проверяется на существование. Очевидно, такого пути не существует в системе, если рассматривать его как абсолютный (потому что он не абсолютный). И в итоге метод возвращает ошибку. Приходится вместо Код писать Код что менее красиво и логично. Я смотрел исходники Qt, но ошибки не нашёл - для Unix-систем проверка на абсолютность делается самым логичным образом: если первый символ - слеш, то путь абсолютный. Как может возникать баг - не знаю. Собственно, вопросы.
Название: Re: Ошибка проверки пути на абсолютность на Linux. Отправлено: Old от Январь 31, 2013, 19:56 Почитай про ресурсы а документации: The Qt Resource System
С двоеточия начинаются файлы в ресурсах. Название: Re: Ошибка проверки пути на абсолютность на Linux. Отправлено: thewizard от Январь 31, 2013, 20:17 Почитай про ресурсы а документации: The Qt Resource System Давно не использовал ресурсы, поэтому забыл об этом. Но в указанной вами статье написано:С двоеточия начинаются файлы в ресурсах. Цитировать By default, resources are accessible in the application under the same file name as they have in the source tree, with a :/ prefix, or by a URL with a qrc scheme. То есть для идентификации доступа к ресурсам используется префикс ":/", а следовательно, одно двоеточие в начале пути не должно трактоваться как начало пути к ресурсу.Так что проблема, видимо, в другом. Название: Re: Ошибка проверки пути на абсолютность на Linux. Отправлено: kuzulis от Январь 31, 2013, 21:05 А если двоеточие заекскейпить?
Код
|