Название: QSetting in .ini [РЕШЕНО] Отправлено: МП© от Март 23, 2012, 10:51 Записываю - считываю данные float в .ini
читается хорошо, но записывает в таком виде: Код
Записываю так: Код
Если записываю как строку: Код то записывается как надо, например F=9.9 но подозреваю, что не по феншую так делать. Подскажите, пожалуйста в чем может быть проблема использования float? Название: Re: QSetting in .ini Отправлено: mutineer от Март 23, 2012, 11:40 читает из .ini нормально? если нормально, то в чем вообще проблема? Qt удобнее хранить в таком виде. Или ты планируешь чем-то не-Qt менять этот файл?
Название: Re: QSetting in .ini Отправлено: МП© от Март 23, 2012, 11:59 читает из ini нормально, а вот записывать float отказывается, точнее записывает но в формате @Variant(\0\0\0?A\x1e\x66\x66).
значение int записывает как надо, string Тоже норм. если бы требовалось только записать число 9.9, то я бы использовал QString, но потребуются некоторые вычисления с float. Использоваться будет только в Qt, но возможно потребуется вручную менять ini файл Название: Re: QSetting in .ini Отправлено: mutineer от Март 23, 2012, 12:01 читает из ini нормально, а вот записывать float отказывается, точнее записывает но в формате @Variant(\0\0\0?A\x1e\x66\x66). вот записало оно float в этом странном формате. Обратно его считывает? Название: Re: QSetting in .ini Отправлено: V1KT0P от Март 23, 2012, 12:22 читает из ini нормально, а вот записывать float отказывается, точнее записывает но в формате @Variant(\0\0\0?A\x1e\x66\x66). Ну так записывай так:значение int записывает как надо, string Тоже норм. если бы требовалось только записать число 9.9, то я бы использовал QString, но потребуются некоторые вычисления с float. Использоваться будет только в Qt, но возможно потребуется вручную менять ini файл Код: settings.setValue("F",QString::number(F, 'f', 6)); Код: F = settings.value("F").toFloat(); Название: Re: QSetting in .ini Отправлено: GreatSnake от Март 23, 2012, 12:35 Вроде должно работать как ты хочешь. Работать будет при условии что у писавшего и читающего будут одинаковые локали.В случае с QVariant работать будет всегда. Название: Re: QSetting in .ini Отправлено: V1KT0P от Март 23, 2012, 12:48 Вроде должно работать как ты хочешь. Работать будет при условии что у писавшего и читающего будут одинаковые локали.В случае с QVariant работать будет всегда. Название: Re: QSetting in .ini Отправлено: GreatSnake от Март 23, 2012, 13:00 Да, всегда но вот тогда вручную конфиг будет затруднительно изменить. А так все что можно в UTF-8 и нет проблем. А причём здесь кодировка? Имеется в виду, что в одних локалях используется точка, а в других запятая.Название: Re: QSetting in .ini Отправлено: V1KT0P от Март 23, 2012, 13:05 Да, всегда но вот тогда вручную конфиг будет затруднительно изменить. А так все что можно в UTF-8 и нет проблем. А причём здесь кодировка? Имеется в виду, что в одних локалях используется точка, а в других запятая.Название: Re: QSetting in .ini Отправлено: GreatSnake от Март 23, 2012, 13:23 Только что проверил, QString-у плевать, что точка что запятая одинаково преобразовывает. Ню-ню) А теперь выстави "C" локаль и посмотри как QString подавится на запятой.Название: Re: QSetting in .ini Отправлено: МП© от Март 23, 2012, 14:03 вот записало оно float в этом странном формате. Обратно его считывает? считывает правильно.Ну так записывай так: Помогло получить то что нужно:) Спасибо огромное!!:)Код: settings.setValue("F",QString::number(F, 'f', 6)); Название: Re: QSetting in .ini Отправлено: V1KT0P от Март 23, 2012, 14:37 Только что проверил, QString-у плевать, что точка что запятая одинаково преобразовывает. Ню-ню) А теперь выстави "C" локаль и посмотри как QString подавится на запятой.Название: Re: QSetting in .ini [РЕШЕНО] Отправлено: GreatSnake от Март 23, 2012, 14:48 Ну и чего спешишь? Ведь решил-то не совсем верно.
Если хочешь, чтобы читалось всегда и везде, делай используя QLocale: запись: Код чтение: Код
Название: Re: QSetting in .ini Отправлено: GreatSnake от Март 23, 2012, 14:49 Тогда можно добавить замену разделителя на тот что является текущим в локали. А теперь вопрос: как средствами Qt его узнать?Название: Re: QSetting in .ini Отправлено: V1KT0P от Март 23, 2012, 14:53 Тогда можно добавить замену разделителя на тот что является текущим в локали. А теперь вопрос: как средствами Qt его узнать?Код
Название: Re: QSetting in .ini Отправлено: GreatSnake от Март 23, 2012, 15:04 Тогда можно добавить замену разделителя на тот что является текущим в локали. А теперь вопрос: как средствами Qt его узнать?Код
Я просто тоже когда-то с этим возился и мне очень не хватало QLocale::setDecimalPoint(), т.к. постоянная замена разделителя, имхо, моветон. |