Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как сохранить комментарии в INI-файле?
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
hkarel
В Qt есть класс QSettings, который работает с INI-форматом, и все в нем хорошо, вот только комментарии при работе с INI-файлом удаляются.
Возможно ли сделать так чтобы комментарии сохранялись в INI-файле?
Litkevich Yuriy
Цитата(hkarel @ 16.6.2010, 18:53) *
Возможно ли сделать так чтобы комментарии сохранялись в INI-файле?
нет, нужно искать стороннюю библиотеку для работы с подобным форматом.
kibsoft
INI же обычный текстовый файл, просто структурированный. Не понял что за комментарии?
По-моему самому можно быстро написать сохранение в подобный файл..
alex977
Цитата(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
решётка (#) тоже воспринимается как комментарий. Но при записи в ini-файл ещё и другие номера случаются. Как-то раз я обозвал группу:
"Qt API", дак при записи, вместо пробела было воткнуто "%20", почему так, я не понял.
hkarel
Цитата(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
про пробелы в именах есть еще обсуждение тут
hkarel
Цитата(molchanoviv @ 17.6.2010, 11:43) *
про пробелы в именах есть еще обсуждение тут


Из "той" темы

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

Записывать "по русски" названия секция и параметров потребности не было, а вот значения по русски хранить была нужда. Решил проблему так:
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);
    }
};

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.