crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> глобальный поиск файла
epishev
  опции профиля:
сообщение 7.6.2011, 10:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Не могу найти функцию глобального поиска по имене файла (пример: Game.exe)

Есть такая функция, или что-то подобное??

Заранее спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 7.6.2011, 13:03
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


напрямую такой функции вроде нет.
поробуй использовать либо QDir::entryInfoList для рекурсивного поиска по папкам нужного файла либо QStringList QFileSystemWatcher::files () const.
или возможно использовать платформо зависимое API для конкретной ос (под виндой например поможет HANDLE WINAPI FindFirstFile(
__in LPCTSTR lpFileName, __out LPWIN32_FIND_DATA lpFindFileData))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 7.6.2011, 20:42
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 7.6.2011, 14:03) *
напрямую такой функции вроде нет.
поробуй использовать либо QDir::entryInfoList для рекурсивного поиска по папкам нужного файла либо QStringList QFileSystemWatcher::files () const.
или возможно использовать платформо зависимое API для конкретной ос (под виндой например поможет HANDLE WINAPI FindFirstFile(
__in LPCTSTR lpFileName, __out LPWIN32_FIND_DATA lpFindFileData))


нашел вот эту функцию, вроде по описанию в документации подходит

QString QDir::relativeFilePath ( const QString & fileName ) const

, только работает не так, как я ожидал....
поидее должна возвращать путь к файлу относительно заданного каталога, но у меня возвращает только название файла...

почему так?? или я что-то нитак понял?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 8.6.2011, 7:34
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


epishev, всё правильно, возвращает относительный путь. А тебе надо полный путь - absoluteFilePath()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.6.2011, 14:06
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(epishev @ 7.6.2011, 23:42) *
поидее должна возвращать путь к файлу относительно заданного каталога, но у меня возвращает только название файла...
Должна возвращать путь относительно QDir'а.
Если QDir совпадает с путёк файлу, то и относительный путь будет равен имени файла
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 8.6.2011, 14:58
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 8.6.2011, 15:06) *
Цитата(epishev @ 7.6.2011, 23:42) *
поидее должна возвращать путь к файлу относительно заданного каталога, но у меня возвращает только название файла...
Должна возвращать путь относительно QDir'а.
Если QDir совпадает с путёк файлу, то и относительный путь будет равен имени файла


пишу:

QString path = this->GetCurrentDir(); //получаю рабочий каталог ("С:/")
QDir dir(path);
QString str = QDir::absoluteFilePath(dir.relativeFilePath(sAppName)); // str = "C:/iFile.exe", а должен быть C:/Qt/projects/у/iFile-build-desktop/debug/iFile.exe
this->SetCurrentDir(dir.absoluteFilePath(str).toAscii()); //изменяю рабочий каталог


почему так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.6.2011, 17:48
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(epishev @ 8.6.2011, 17:58) *
sAppName
а это почему не показываешь откуда взялось?

Цитата(epishev @ 8.6.2011, 17:58) *
QString path = this->GetCurrentDir(); //получаю рабочий каталог ("С:/")
очень странное телодвижение, должно быть:
qApp->applicationDirPath();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 8.6.2011, 19:28
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сори, сначала не так понял....

qApp->applicationDirPath();


это то, что нужно! Спасибо!

Сообщение отредактировал epishev - 8.6.2011, 21:10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 23:22