Russian Qt Forum

Qt => Общие вопросы => Тема начата: remiznik от Июль 16, 2008, 18:41



Название: как определить какой фаел открыл ?
Отправлено: remiznik от Июль 16, 2008, 18:41
Через окно выбора файла получаю имя файла ! надо чтоб если это фаел определенного формата выполнялась определенная функция если другая то друга ?
я понимаю что надо как-то сравнить две переменные формата QString но как это реализовать не понимаю !!!


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 16, 2008, 18:55
Как я поимаю, тип файла ты собираешься получать по его расширению, тогда нужно:

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



Название: Re: как определить какой фаел открыл ?
Отправлено: remiznik от Июль 16, 2008, 18:59
понятно что надо как-то отрезать расширение  и сравнить его с заданным ??но вот как ??? может подскажите какая функция QString может это сделать ?


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 16, 2008, 19:00
понятно что надо как-то отрезать расширение  и сравнить его с заданным ??но вот как ??? может подскажите какая функция QString может это сделать ?

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


Название: Re: как определить какой фаел открыл ?
Отправлено: remiznik от Июль 16, 2008, 19:06
в Qt 3 я что-то не чего подходящего не нашел !! но я не силен в английском сейчас посмотрю ешё раз !


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 16, 2008, 19:14
в Qt 3 я что-то не чего подходящего не нашел !! но я не силен в английском сейчас посмотрю ешё раз !

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

По теме:

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

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


Название: Re: как определить какой фаел открыл ?
Отправлено: spirit от Июль 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);
...

и будет тебе счастье  ;)


Название: Re: как определить какой фаел открыл ?
Отправлено: Red Devil от Июль 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, а то вместе с точкой вырежет.


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 16, 2008, 22:18
2 Red Devil: У товарища Qt3 а не Qt4


Название: Re: как определить какой фаел открыл ?
Отправлено: Red Devil от Июль 16, 2008, 23:12
А в Q3 класса QString нету разве ?


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 16, 2008, 23:52
А в Q3 класса QString нету разве ?

В QString из Q3 нет lastIndexOf


Название: Re: как определить какой фаел открыл ?
Отправлено: Red Devil от Июль 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);
}


Название: Re: как определить какой фаел открыл ?
Отправлено: Alex03 от Июль 17, 2008, 11:23
А чем QFileInfo::extension() не понравилсято?


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 17, 2008, 12:04
Тогда вот так

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


Название: Re: как определить какой фаел открыл ?
Отправлено: Red Devil от Июль 17, 2008, 13:07
ну блин откуда я знал-то О_о ? Даже в assistant не написано ничего про QString и Qt 3.


Название: Re: как определить какой фаел открыл ?
Отправлено: pastor от Июль 17, 2008, 13:34
ну блин откуда я знал-то О_о ? Даже в assistant не написано ничего про QString и Qt 3.

Вобщето нужно смотреть в Qt3 Assistant. Но даже в Qt4 Assistant это написано:

http://doc.trolltech.com/4.4/qstring-qt3.html