Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Sokoloff |
28.11.2010, 14:53
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11
|
Похоже наткнулся на баг Qt. читаю данные из INI-шника через QSettings, некоторые значения представляют собой список разделенный точкой с запятой. Похоже Qsettings воспринимает все что после ";" как комментарий. Интересно что этот баг Link еще в 2007 году. Или Qt-шники это сломали в новых версиях, или я что-то не так делаю (хотя что там можно не так сделать?). Вот тестовый пример.
Раскрывающийся текст test.ini main.cpp Если это у вас повторяется, то буду открывать баг по новой. У меня 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, в конфигурационных файлах символы:
Цитата # всегда были комментариями. Существует негласное правило:; # - комментарий общего назначения ; - временный комментарий (отключение параметров, но не удаление их) примеры: Link Link |
|
|
|
|
kwisp |
28.11.2010, 18:51
Сообщение
#4
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(Litkevich Yuriy @ 28.11.2010, 18:15) Link всегда были комментариями. ну по-моему, это очевидно. но способ включить эти символы в значение должен быть. просто напрашивается экранирование обр. слешем. |
|
|
|
|
Litkevich Yuriy |
28.11.2010, 19:21
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(kwisp @ 28.11.2010, 20:51) Link но способ включить эти символы в значение должен быть. способ-то есть, при работе из программы, а вот пользователь, редактирующий файл, до этого может и не допетрить.QSettings будет это сохранять как строку взятую в двойные кавычки. Цитата(kwisp @ 28.11.2010, 20:51) Link просто напрашивается экранирование обр. слешем. это спецификация 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
|
Прошу прощения, что не отвечал - был в оффлайне.
Это не коментарий, вот что пишут в Link: Цитата Comments must begin at the beginning of a line or after a spacing character. А здесь нет пробела перед ";". Заэкранировать, взять в скобки и.т.д я не могу, это не мой конфиг, это стандартные никсовые Link, уж какие есть в системе, такие и надо читать. |
|
|
|
|
Litkevich Yuriy |
28.11.2010, 23:22
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(kwisp @ 29.11.2010, 0:00) Link обычно в комментариях вначале файла пишут как им пользоваться QSettings все коменты убьёт при сохранении. Это давняя гадость в нём.Sokoloff, тебе выход один - использовать стороннюю библиотеку (назваие забыл, Сишная есть кроссплатформенная) |
|
|
|
|
Sokoloff |
29.11.2010, 0:06
Сообщение
#9
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11
|
Цитата(Litkevich Yuriy @ 28.11.2010, 23:22) Link Sokoloff, тебе выход один - использовать стороннюю библиотеку (назваие забыл, Сишная есть кроссплатформенная) Я могу и ручками распарсерить файл, делов то. Вопрос открывать тот закрытый баг в багтрекере или нет. Похоже надо открывать. |
|
|
|
|
kwisp |
29.11.2010, 0:18
Сообщение
#10
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(Litkevich Yuriy @ 28.11.2010, 23:22) Link QSettings все коменты убьёт при сохранении. Это давняя гадость в нём. это если ты сохранешь изменения. в линксе и поэтому тоже существуют squid.conf.example к примеру. где коменты останутся если только пользователь сам их не грохнет. Цитата(Sokoloff @ 28.11.2010, 23:16) Link Заэкранировать, взять в скобки и.т.д я не могу, это не мой конфиг, это стандартные никсовые desktop-файлы, уж какие есть в системе, такие и надо читать. так тогда дело очевидное - пиши троллям почему QSettings не читает стандартные десктоповские файлы. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 23:18 |