Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 13, 2006, 19:49 Если никто не может помочь с решением проблемы слэшей, то может подскажете, как правильно внедрить в Qt подправленный файл QSettings.cpp. Можно это сделать, неперекомпилируя всю библиотеку?
Название: Перекомпилировать QSettings Отправлено: Dendy от Декабрь 13, 2006, 20:02 Не советую етого делать, потеряешь обратную совместимость. Посмотри в сторону: QSettings::registerFormat(). Задай вопрос Троллям.
Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 13, 2006, 20:21 Цитировать Форум не чат - иногда потерпеть надобно. Люди сюда периодически заходят. Усе понимаю, но сроки горят. Поэтому хочу сразу план "В" провентилировать. добавлено спустя 6 минут: Цитата: "Dendy" Не советую етого делать, потеряешь обратную совместимость. Посмотри в сторону: QSettings::registerFormat(). Задай вопрос Троллям. C registerFormat() я чего-то не въезжаю. В документации по этой функции совсем мало написано. Но по-моему это все-таки для реестра не применимо. А Тролли отвечают некоммерческим пользователям? И куда лучше писать? Название: Перекомпилировать QSettings Отправлено: Tonal от Декабрь 13, 2006, 20:23 Использую QSettings для сохранения/восстановления в реестр - без проблем.
Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 13, 2006, 20:25 Цитата: "Tonal" Использую QSettings для сохранения/восстановления в реестр - без проблем. А у вас используются имена параметров с обратными слэшами? Название: Перекомпилировать QSettings Отправлено: Dendy от Декабрь 13, 2006, 20:29 На сколько я понимаю в вин-реестре все разделители - обратньІе слеши. Какая платформа хоть?
Название: Перекомпилировать QSettings Отправлено: Вячеслав от Декабрь 14, 2006, 00:42 Хм .. А очень тупой вариант _все_ загнать в QDataStream и сохранять в QSettings его ? Ы ?
Название: Перекомпилировать QSettings Отправлено: Вудруф от Декабрь 14, 2006, 07:50 Цитировать А Тролли отвечают некоммерческим пользователям? Да Название: Перекомпилировать QSettings Отправлено: Tonal от Декабрь 14, 2006, 07:53 Может поможет внимательное изучение вот этого примера:
$(QTDIR)\examples\tools\settingseditor Особенно вот этого пункта главного меню: Меню File/"Open Windows Registry path..." Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 14, 2006, 11:06 Цитата: "Dendy" На сколько я понимаю в вин-реестре все разделители - обратньІе слеши. Какая платформа хоть? WinXP. Да, разделители - обратные слэши, но шибко хитрый Майкрософт додумался и имя параметра сделать с обратными слэшами. И это только добавляет проблем. добавлено спустя 8 минут: Цитата: "Tonal" Может поможет внимательное изучение вот этого примера: $(QTDIR)\examples\tools\settingseditor Особенно вот этого пункта главного меню: Меню File/"Open Windows Registry path..." Этот пример при открывании интересующих меня параметров (\HKLM\Hardware\Devicemap\Serialcomm\) выдает их в неправильном виде с указанием "Invalid". Так что там все сделано также неправильно, как и у меня. добавлено спустя 2 минуты: Цитата: "Вячеслав" Хм .. А очень тупой вариант _все_ загнать в QDataStream и сохранять в QSettings его ? Ы ? Мне же не свой параметр нужен, а системный. Если бы я свой сохранял, ни за что бы не додумался дать ему такое имя. :) Название: Перекомпилировать QSettings Отправлено: Tonal от Декабрь 14, 2006, 11:32 Похоже действительно ошибочка в QSettings.
Отошли минимальный код тролям - исправят. А в программе придётся видимо напрямую с реестром работать... Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 14, 2006, 11:38 Цитата: "Tonal" Похоже действительно ошибочка в QSettings. Отошли минимальный код тролям - исправят. А в программе придётся видимо напрямую с реестром работать... Да уж, как верно подмечено в QSettings.h с безумным API реестра. 8) А какой код отослать? Свой? И где они исправят? Неужели у себя? Название: Перекомпилировать QSettings Отправлено: bigirbis от Декабрь 14, 2006, 11:45 Но все-таки для теста, ИМХО, лучше этот коде сперва сюда выложить.
Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 14, 2006, 11:52 #ifdef Q_WS_WIN
QSettings systemCOMs("\\HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM",QSettings::NativeFormat); QStringList COMs = systemCOMs.allKeys(); for(int i=0;i<COMs.size();i++) ui.comboPort->insertItem(i,systemCOMs.value(COMs.at(i)).toString()); #endif Название: Перекомпилировать QSettings Отправлено: Tonal от Декабрь 14, 2006, 17:50 Заслал баг
Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 14, 2006, 17:55 Цитата: "Tonal" Заслал баг Троллям? Название: Перекомпилировать QSettings Отправлено: Tonal от Декабрь 15, 2006, 07:16 Ага №143785
Уже ответили: Цитировать For QSettings, the slash character has special meaning in that it separates subkeys. You cannot write or read entries that have a slash-character in the name. QSettings is not designed to be a generic API to the Windows Registry; you should use Win32 APIs to do so if you want to access elements that are not compatible with the QSettings syntax. Так что подобное только через Win32 API или другую какую над ним обёртку. Название: Перекомпилировать QSettings Отправлено: Андрей А. от Декабрь 15, 2006, 10:44 Цитата: "Tonal" Ага №143785 Уже ответили: ...... [Так что подобное только через Win32 API или другую какую над ним обёртку. Спасибо! Мне именно так и пришлось поступить. Но, кстати, с параметры с прямыми слэшами делать можно, так что похоже Тролли просто ленятся слегка. :wink: А что означает этот номер? Этот ответ есть где-то в публичном доступе? Название: Перекомпилировать QSettings Отправлено: Tonal от Декабрь 15, 2006, 11:04 Когда постишь баг тролям:
http://www.trolltech.com/trolltech/bugreport-form Тебе высылаетя подтверждалка с номером. Если баг зарегистрируют, его можно найти в: http://www.trolltech.com/developer/task-tracker Введя это номерок. Этот баг пока не зарегистрировали. Я им ответил, что ограничение на имена должноы быть описаны в ассистенте. ;-) |