Автор: 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);
}
};