Странное сохранение значения QSettings+QVariant+float |
Здравствуйте, гость ( Вход | Регистрация )
Странное сохранение значения QSettings+QVariant+float |
Гость_sss_* |
3.8.2010, 9:22
Сообщение
#1
|
Гости |
дает на выходе
если использовать тип double все нормально. Это баг или фича? qt 4.6.0. |
|
|
Алексей1153 |
3.8.2010, 9:33
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
А обратно загружается правильно?
Данная ескейп-последовательность - это массив unsigned char p[]={0x00,0x00,0x00,0x87,0x42,0xF6,0x00,0x00}; отладчик говорит, ((float)123.0) должно быть 00 00 F6 42 мы и видим это в конце - 0x42,0xF6,0x00,0x00 (42 - младший байт) (но, может, там ещё какая-то инфа дописывается) Сообщение отредактировал Алексей1153 - 3.8.2010, 9:35 |
|
|
SABROG |
3.8.2010, 10:57
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
На самом деле при таком раскладе проще настройки тогда держать где-нибудь в двоичном файле, так как пользователь все-равно не может изменить вручную подобные значения через текстовый редактор.
|
|
|
Гость_sss_* |
3.8.2010, 13:19
Сообщение
#4
|
Гости |
Читать, то он читает... Даже обход проблемы понятен что-то типа setValue("test" QString().setNum(123.0f)), но все равно это как-то перанально...
Кстати, ковырнул тут исходник qt, выяснилось следующее: похоже косяк в методе QString QSettingsPrivate::variantToString(const QVariant &v) из файла qsettings.cpp строка 461. Там идет такой большой switch в котором есть следующий блок случаев:
Похоже сдесь чисто теоретически не хватает что-то типа QMetaType::Float. Кто проверит это на практике и сообщит об этом разработчикам? |
|
|
Текстовая версия | Сейчас: 12.12.2024, 7:09 |