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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Работа с ini файлами под Qt 4.4 и выше (компонент TDataFile)  (Прочитано 33878 раз)
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« : Октябрь 15, 2008, 11:44 »

Всем доброго времени суток!
Нашел на сайте интересный компонент: http://hardclub.donntu.edu.ua/projects/qt/components/datafile.htm
для работы с ini файлами. Скачал и решил им воспользоваться.
Но как оказалось он написан под Qt 3.3, из-за чего возникло много ошибок, при компиляции на Qt 4.4, большенство из них я победил, но осталось несколько ошибок, с которыми я ничего не могу поделать (на Qt програмирую недавно).
Подскажите, ктонибудь переводил компонент TDataFile под Qt 4? Или может кто знает аналогичные компоненты, для работы с ini файлами.

ЗЫ: вот ошибки, которые я так и не смог победить:

Цитировать
tdatafile.cpp(15) : error C2512: 'QMapIterator<Key,T>' : no appropriate default constructor available
        with [  Key=QString, T=type_ValueList  ]
tdatafile.cpp(120) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
tdatafile.cpp(200) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'QMap<Key,T>::iterator' (or there is no acceptable conversion)
        with [ Key=QString, T=type_ValueList ]
tdatafile.cpp(201) : error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'QMapIterator<Key,T>' (or there is no acceptable conversion)
        with [ Key=QString, T=type_ValueList ]
tdatafile.cpp(207) : error C2678: binary '==' : no operator found which takes a left-hand operand of type 'QMapIterator<Key,T>' (or there is no acceptable conversion)
        with [ Key=QString, T=type_ValueList ]
tdatafile.cpp(209) : warning C4172: returning address of local variable or temporary
tdatafile.cpp(215) : error C2678: binary '==' : no operator found which takes a left-hand operand of type 'QMapIterator<Key,T>' (or there is no acceptable conversion)
        with [ Key=QString, T=type_ValueList ]

Всем заранее спасибо!
Записан
spirit
Гость
« Ответ #1 : Октябрь 15, 2008, 11:55 »

QSettings не смотрели?
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #2 : Октябрь 15, 2008, 12:23 »

Смотрел, но нужна работа именно с ini файлами (или им подобными).
А по поводу ошибок, ничего подсказать не можете?
Записан
spirit
Гость
« Ответ #3 : Октябрь 15, 2008, 12:25 »

так QSettings позволяет использовать ini формат , нужно в конструктор передать правильный параметр
Цитировать
QSettings::IniFormat | 1 | Store the settings in INI files.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Октябрь 15, 2008, 12:27 »

Смотрел, но нужна работа именно с ini файлами (или им подобными).
А по поводу ошибок, ничего подсказать не можете?

QSettings может работать с ини-файлами, см. ассистант.


По поводу ошибок, то неплохобы было показать проблемный код
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #5 : Октябрь 15, 2008, 12:36 »

2 pastor
Цитировать
По поводу ошибок, то неплохобы было показать проблемный код
Вот определение класса:
Код:
typedef QMap<QString, QString> type_ValueList;

class TDataFile
{
public:
TDataFile(const QString &name = QString::null);
~TDataFile();
........................................

protected:
........................................
QMap<QString, type_ValueList> SectionList;          //Вот сэтим, возможно проблемма
QMapIterator<QString, type_ValueList> mi; //Или с этим
};

Реализация:
Код:
TDataFile::TDataFile(const QString &name)   //тут чтото еще надо инициализировать, для Qt 4.4
{
setFileName(name);
}
......................................
bool TDataFile::useSection(const QString &section)
{
mi = SectionList.find(section.toLower());          //На это ругается
return (mi != SectionList.end());
}
......................................
bool TDataFile::openRead()
{
if (!f.open(QIODevice::ReadOnly)) return false;
ts.setDevice(&f);
// prepare
SectionList.clear();
mi = NULL;                              //И на это тоже ругается
..............................
}
..............................
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #6 : Октябрь 15, 2008, 12:38 »

2 spirit
Цитировать
так QSettings позволяет использовать ini формат , нужно в конструктор передать правильный параметр
Тоесть и под виндой и под линуксом позволяет коректно читать ini файлы?
Записан
spirit
Гость
« Ответ #7 : Октябрь 15, 2008, 12:38 »

ага
Цитировать
The QSettings class provides persistent platform-independent application settings.
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #8 : Октябрь 15, 2008, 12:41 »

А ты случайно не в курсе, с Qt какиенибудь примеры работы с ini файлами (через QSettings) идут?
Записан
spirit
Гость
« Ответ #9 : Октябрь 15, 2008, 12:43 »

в курсе
см. тут
Цитировать
QTDIR/examples/tools/settingseditor/
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #10 : Октябрь 15, 2008, 12:44 »

Большое спасибо, щас посмотрим....  Смеющийся
« Последнее редактирование: Октябрь 15, 2008, 12:47 от OS2 » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #11 : Октябрь 15, 2008, 12:50 »

2 OS2:

По поводу ошибки, попробуй заинклудить QMap:

Код:
...
#include <QMap>
...

typedef QMap<QString, QString> type_ValueList;

class TDataFile
{
public:
TDataFile(const QString &name = QString::null);
~TDataFile();
........................................

protected:
........................................
QMap<QString, type_ValueList> SectionList;          //Вот сэтим, возможно проблемма
QMapIterator<QString, type_ValueList> mi; //Или с этим
};

ЗЫЖ Дл портирования приложения с Qt3 на Qt4 есть утилита qt3to4. Также почитай про портирование в ассистанте Porting from Qt 3 to Qt 4
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #12 : Октябрь 15, 2008, 12:53 »

Все инклюды есть, из экономии места я их просто не привел:
Код:
#include <qvariant.h>
#include <qwidget.h>
#include <qfile.h>
#include <qstring.h>
#include <qstringlist.h>
#include <qtextstream.h>
#include <qmap.h>
#include <qcolor.h>
#include <qrect.h>
Записан
spirit
Гость
« Ответ #13 : Октябрь 15, 2008, 12:54 »

а они в ашнике или в cpp?
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #14 : Октябрь 15, 2008, 12:58 »

Кто, они?  Непонимающий
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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