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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QUrl баг?  (Прочитано 6875 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« : Июнь 15, 2009, 20:08 »

Код:
#include <QtCore/QCoreApplication>
#include <QUrl>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QUrl url("file:///C:/WINDOWS/explorer.exe");
    qDebug() << url.path();

    return a.exec();
}
печатает "/C:/WINDOWS/explorer.exe"
а по моему разумению должно было бы "C:/WINDOWS/explorer.exe"? нужно писать письмо троллям?
Записан
BRE
Гость
« Ответ #1 : Июнь 15, 2009, 20:12 »

Код:
#include <QtCore/QCoreApplication>
#include <QUrl>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QUrl url("file:///C:/WINDOWS/explorer.exe");
    qDebug() << url.path();

    return a.exec();
}
печатает "/C:/WINDOWS/explorer.exe"
а по моему разумению должно было бы "C:/WINDOWS/explorer.exe"? нужно писать письмо троллям?
А зачем три ///?
Записан
Rcus
Гость
« Ответ #2 : Июнь 15, 2009, 20:13 »

эээ, а собственно почему это? В Unix-образных это вполне корректный абсолютный путь Улыбающийся
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Июнь 15, 2009, 20:17 »

C:/WINDOWS/explorer.exe в никсах?) ну-ну) как раз в том-то и баг, что под кубунтой\макосью все ок было, а под винду (тест) вот такой баг. Я конечно понимаю, что схема это строка вида xxxx:// но в винде если в проводнике ввести file то там будет как раз с 3мя слешами. И самое главное - drop из проводника также возвращает QUrlList с 3мя (!) слешами
Записан
Rcus
Гость
« Ответ #4 : Июнь 15, 2009, 20:20 »

Ну ясно почему три слеша: RFC1738(http://www.faqs.org/rfcs/rfc1738.html) определяет схему file как
fileurl        = "file://" [ host | "localhost" ] "/" fpath
host может быть пустым, потому и три слеша.
Записан
BRE
Гость
« Ответ #5 : Июнь 15, 2009, 20:25 »

А что в венде вернет следующая конструкция?  Подмигивающий
Код
C++ (Qt)
QUrl url(...);
QString path = url.toLocalFile();
 
« Последнее редактирование: Июнь 15, 2009, 20:30 от BRE » Записан
Rcus
Гость
« Ответ #6 : Июнь 15, 2009, 20:31 »

oh /*забивает гвоздь в голову чтобы не забыть протестировать поведение в венде, как найдет ее, чувствует что сломал кое-что Улыбающийся*/
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Июнь 15, 2009, 20:53 »

да, toLocalFile работает... но разве path это все-таки не часть после //имя юзверя и прочая лабуда/ ?
Записан
mugabe
Гость
« Ответ #8 : Июнь 16, 2009, 10:57 »

да, toLocalFile работает... но разве path это все-таки не часть после //имя юзверя и прочая лабуда/ ?

Код
C++ (Qt)
   QUrl url("http://www.ru/test");
   qDebug() << url.path();
 
 
output: "/test"
 

тоже баг? Улыбающийся

QUrl::setPath()


ну и как выше заметил RCus, по RFC путь у file:/// начинается с 3-го слеша
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #9 : Июнь 16, 2009, 15:31 »

оппа) а мне казалось что path это www.ru( я тупой
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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