Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Как сохранить комментарии в INI-файле?

Автор: hkarel 16.6.2010, 14:53

В Qt есть класс QSettings, который работает с INI-форматом, и все в нем хорошо, вот только комментарии при работе с INI-файлом удаляются.
Возможно ли сделать так чтобы комментарии сохранялись в INI-файле?

Автор: Litkevich Yuriy 16.6.2010, 14:58

Цитата(hkarel @ 16.6.2010, 18:53) *
Возможно ли сделать так чтобы комментарии сохранялись в INI-файле?
нет, нужно искать стороннюю библиотеку для работы с подобным форматом.

Автор: kibsoft 16.6.2010, 20:22

INI же обычный текстовый файл, просто структурированный. Не понял что за комментарии?
По-моему самому можно быстро написать сохранение в подобный файл..

Автор: alex977 16.6.2010, 21:36

Цитата(kibsoft @ 16.6.2010, 21:22) *
INI же обычный текстовый файл, просто структурированный. Не понял что за комментарии?


Что-то вроде этого (комментарии выделены полужирным):

Цитата
[LastLookup]
String=a

[Exercises]
;Lang1=1
Lang1=x
;Lang1=2
;Lang2=1

Lang2=x
;Lang2=2

[picLookUp]
;Type=1
Type=2
;Type=3

[Font]
Size=-240

Автор: Litkevich Yuriy 17.6.2010, 6:29

решётка (#) тоже воспринимается как комментарий. Но при записи в ini-файл ещё и другие номера случаются. Как-то раз я обозвал группу:
"Qt API", дак при записи, вместо пробела было воткнуто "%20", почему так, я не понял.

Автор: hkarel 17.6.2010, 10:05

Цитата(Litkevich Yuriy @ 16.6.2010, 15:58) *
нет, нужно искать стороннюю библиотеку для работы с подобным форматом.

В сторонней наверняка не будет того, что есть в QSettings

Цитата(kibsoft @ 16.6.2010, 21:22) *
INI же обычный текстовый файл, просто структурированный. Не понял что за комментарии?
По-моему самому можно быстро написать сохранение в подобный файл..

Не совсем обычный текстовый файл, QSettings позволяет сохранять бинарные последовательности и пользовательские типы, т.е. аля сериализация, велосипедить такое самостоятельно совсем не хочется.

Цитата(Litkevich Yuriy @ 17.6.2010, 7:29) *
... Как-то раз я обозвал группу:
"Qt API", дак при записи, вместо пробела было воткнуто "%20", почему так, я не понял.

Мне всегда казалось, что дефакто, пробелы в именах групп недопустимы :)
Возможно QSettings обрабатывает наименования аналогично с url (QUrl::toPercentEncoding) или это как то связано с дефолтным QTextCodec используемым в QSettings.

Автор: molchanoviv 17.6.2010, 10:43

про пробелы в именах есть еще обсуждение http://forum.vingrad.ru/forum/topic-302727.html

Автор: hkarel 17.6.2010, 10:59

Цитата(molchanoviv @ 17.6.2010, 11:43) *
про пробелы в именах есть еще обсуждение http://forum.vingrad.ru/forum/topic-302727.html


Из "той" темы

Цитата
... Расковырял их исходники и понял, что нет, нельзя. Мало того, они и русские буквы в названиях секций и параметров превращают в чёрти что ...

Записывать "по русски" названия секция и параметров потребности не было, а вот значения по русски хранить была нужда. Решил проблему так:
class QSettingsM : public QSettings 
{
public:
    QSettingsM(const QString &fileName, Format format, QObject* parent = 0)
        : QSettings(fileName, format, parent)
    {
        QTextCodec *codec = QTextCodec::codecForName(/*"KOI8-R"*/ "UTF-8");
        setIniCodec(codec);
    }
};


Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)