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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: как определить какой фаел открыл ?  (Прочитано 9570 раз)
remiznik
Гость
« : Июль 16, 2008, 18:41 »

Через окно выбора файла получаю имя файла ! надо чтоб если это фаел определенного формата выполнялась определенная функция если другая то друга ?
я понимаю что надо как-то сравнить две переменные формата QString но как это реализовать не понимаю !!!
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Июль 16, 2008, 18:55 »

Как я поимаю, тип файла ты собираешься получать по его расширению, тогда нужно:

1. Почитать про класс QString для работы со строками, или
2. Почитать про класс QFileInfo

Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
remiznik
Гость
« Ответ #2 : Июль 16, 2008, 18:59 »

понятно что надо как-то отрезать расширение  и сравнить его с заданным ??но вот как Непонимающий может подскажите какая функция QString может это сделать ?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Июль 16, 2008, 19:00 »

понятно что надо как-то отрезать расширение  и сравнить его с заданным ??но вот как Непонимающий может подскажите какая функция QString может это сделать ?

А ты пробывал читать документацию по тем классам что я указал? Там даже примеры есть по твоему вопросу!
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
remiznik
Гость
« Ответ #4 : Июль 16, 2008, 19:06 »

в Qt 3 я что-то не чего подходящего не нашел !! но я не силен в английском сейчас посмотрю ешё раз !
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июль 16, 2008, 19:14 »

в Qt 3 я что-то не чего подходящего не нашел !! но я не силен в английском сейчас посмотрю ешё раз !

Когда постишь вопрос, нужно указывать версию Qt. Почему все должны догадываться какая версия?

По теме:

Используй
Цитировать
QString QFileInfo::extension ( bool complete = TRUE ) const

Если нужно использовать QString, см. методы QString::findRev и QString::right
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
spirit
Гость
« Ответ #6 : Июль 16, 2008, 19:16 »

...
QFIleInfo fiFirst(fisrtFileName);
qDebug(fiFirst.extension().ascii());
QFIleInfo fiSecond(fisrtSecondName);
qDebug(fiSecond.extension().ascii());
...

вариант с QString:
...
QString ext1 = fileName1.section('.', -1);
QString ext2 = fileName2.section('.', -1);
...

и будет тебе счастье  Подмигивающий
« Последнее редактирование: Июль 16, 2008, 19:31 от spirit » Записан
Red Devil
Гость
« Ответ #7 : Июль 16, 2008, 22:09 »

Код:
QString GetExtensionFromFilename( const QString & sFilename )
{
int nPos = sFilename.lastIndexOf(".");
if (nPos == -1)
return QString();
return sFilename.right(sFilename.size() - nPos);
}

Возможно только, не sFilename.size() - nPos, а sFilename.size() - nPos - 1, а то вместе с точкой вырежет.
« Последнее редактирование: Июль 16, 2008, 22:11 от Red Devil » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Июль 16, 2008, 22:18 »

2 Red Devil: У товарища Qt3 а не Qt4
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Red Devil
Гость
« Ответ #9 : Июль 16, 2008, 23:12 »

А в Q3 класса QString нету разве ?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Июль 16, 2008, 23:52 »

А в Q3 класса QString нету разве ?

В QString из Q3 нет lastIndexOf
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Red Devil
Гость
« Ответ #11 : Июль 17, 2008, 11:04 »

Тогда вот так :
Код:
int LastIndexOf(QChar ch, const QString & sString)
{
    int nPos;
for (nPos = sString.size() - 1; nPos >= 0 && sString[nPos] != ch; --nPos) ;
    return nPos;
}

QString GetExtensionFromFilename( const QString & sFilename )
{
int nPos = LastIndexOf('.', sFilename);
if (nPos == -1)
return QString();
return sFilename.right(sFilename.size() - nPos);
}
Записан
Alex03
Гость
« Ответ #12 : Июль 17, 2008, 11:23 »

А чем QFileInfo::extension() не понравилсято?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Июль 17, 2008, 12:04 »

Тогда вот так

Блин, ну зачем изобретать велосипед? В Qt3 эквивалент lastIndexOf это findRev, и про это я уже писал.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Red Devil
Гость
« Ответ #14 : Июль 17, 2008, 13:07 »

ну блин откуда я знал-то О_о ? Даже в assistant не написано ничего про QString и Qt 3.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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