crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSettings и "точка с запятой" в значении
Sokoloff
  опции профиля:
сообщение 28.11.2010, 14:53
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Похоже наткнулся на баг Qt. читаю данные из INI-шника через QSettings, некоторые значения представляют собой список разделенный точкой с запятой. Похоже Qsettings воспринимает все что после ";" как комментарий. Интересно что этот баг помечен как закрытый еще в 2007 году. Или Qt-шники это сломали в новых версиях, или я что-то не так делаю (хотя что там можно не так сделать?). Вот тестовый пример.
Раскрывающийся текст

test.ini
[Desktop Entry]
Categories=Office;Viewer;Literature;

main.cpp
#include <QtCore/QCoreApplication>
#include <QSettings>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSettings settings("test.ini", QSettings::IniFormat);
    qDebug() << settings.value("Desktop Entry/Categories");
    return 0;
}

Пишет - QVariant(QString, "Office"), т.е. глотает Viewer и прочие значения.
Если это у вас повторяется, то буду открывать баг по новой.

У меня kubuntu 10.10 и Qt 4.7.0



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 28.11.2010, 16:44
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Sokoloff,
1. а экранировать не пробовал?
2. или в ковычки значения взять?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.11.2010, 18:15
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Sokoloff, в конфигурационных файлах символы:
Цитата
#
;
всегда были комментариями. Существует негласное правило:
# - комментарий общего назначения
; - временный комментарий (отключение параметров, но не удаление их)

примеры:
INI-файл
conf-файл
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 28.11.2010, 18:51
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(Litkevich Yuriy @ 28.11.2010, 18:15) *
всегда были комментариями.

ну по-моему, это очевидно.
но способ включить эти символы в значение должен быть.
просто напрашивается экранирование обр. слешем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.11.2010, 19:21
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kwisp @ 28.11.2010, 20:51) *
но способ включить эти символы в значение должен быть.
способ-то есть, при работе из программы, а вот пользователь, редактирующий файл, до этого может и не допетрить.
QSettings будет это сохранять как строку взятую в двойные кавычки.


Цитата(kwisp @ 28.11.2010, 20:51) *
просто напрашивается экранирование обр. слешем.
это спецификация INI-файла от мелкосовта (см. таблицу по моим ссылкам)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 28.11.2010, 22:00
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Litkevich Yuriy,
не знаю что там от мелкософта
у меня
дома и на работе
Цитата
kwisp@T34 ~ $ uname -a
Linux T34 2.6.33-gentoo-r2

обратным слешем пользовался без проблем.
то что пользовател может не додуматься - это ошибка составителя файла - обычно в комментариях вначале файла пишут как им пользоваться. как большинство файлов конфигурации линукс программ.
тут же речь идет о том открывать заново баг троллям или нет. поэтому я и написал про экран. надо попробовать. если экран работает то баг не писать:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 28.11.2010, 23:16
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Прошу прощения, что не отвечал - был в оффлайне.

Это не коментарий, вот что пишут в спецификации:
Цитата
Comments must begin at the beginning of a line or after a spacing character.

А здесь нет пробела перед ";".
Заэкранировать, взять в скобки и.т.д я не могу, это не мой конфиг, это стандартные никсовые desktop-файлы, уж какие есть в системе, такие и надо читать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.11.2010, 23:22
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kwisp @ 29.11.2010, 0:00) *
обычно в комментариях вначале файла пишут как им пользоваться
QSettings все коменты убьёт при сохранении. Это давняя гадость в нём.

Sokoloff, тебе выход один - использовать стороннюю библиотеку (назваие забыл, Сишная есть кроссплатформенная)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 29.11.2010, 0:06
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Litkevich Yuriy @ 28.11.2010, 23:22) *
Sokoloff, тебе выход один - использовать стороннюю библиотеку (назваие забыл, Сишная есть кроссплатформенная)

Я могу и ручками распарсерить файл, делов то. Вопрос открывать тот закрытый баг в багтрекере или нет. Похоже надо открывать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.11.2010, 0:18
Сообщение #10


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(Litkevich Yuriy @ 28.11.2010, 23:22) *
QSettings все коменты убьёт при сохранении. Это давняя гадость в нём.

это если ты сохранешь изменения.
в линксе и поэтому тоже существуют squid.conf.example к примеру. где коменты останутся если только пользователь сам их не грохнет.


Цитата(Sokoloff @ 28.11.2010, 23:16) *
Заэкранировать, взять в скобки и.т.д я не могу, это не мой конфиг, это стандартные никсовые desktop-файлы, уж какие есть в системе, такие и надо читать.


так тогда дело очевидное - пиши троллям почему QSettings не читает стандартные десктоповские файлы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 4:40