![]() |
|
![]() ![]() ![]() |
|
a1ien |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Есть данные которые представляют из себя что-то типа дерева.
Вобще это что-то типа QMap<Qstring,QMap<Qstring,....>>> и вот глубена неизвестна как такое хранилище реализовать, при этом конечный тип это скорее всего QVariant хочу как в интерпретируемых языках иметь доступ таким образом
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
используя в качестве значения map'а "себя" всё более или менее получается:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
a1ien |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
хммм. да должно работать спасибо большое.
|
|||
|
||||
a1ien |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Да вобщем то-что нужно. Но может можно как-то избавится от
Пробовал просто отнаследоватся от QVariant но что-то не так выходит( |
|||
|
||||
borisbn |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
зачем ![]() от оператора присвоения можно избавится, добавив ф-цию присвоения
но тогда вызов будет выглядеть не так элегантно
от QVariant val() можно избавиться, добавив
но не советую, т.к. операторы приведения - зло от QVariant m_value вообще не избавишься, т.к. хранить данные где-то надо... и ещё, я пропустил... в операторе присвоения Settings & operator= лучше использовать константную ссылку на QVariant, а не передачу по значению
![]() P.S. Название у темы прикольное. Так и хочется ответить: "замотай корни в мокрую тряпку и храни при температуре 0...7 град" ![]() ![]() ![]() Это сообщение отредактировал(а) borisbn - 3.4.2011, 11:13 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||
|
|||||||||
a1ien |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
А почему нельзя отнаследовать от QVariant ? Это сообщение отредактировал(а) a1ien - 3.4.2011, 11:33 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
a1ien |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
еще за одно. )
приходится вот таким извратом заниматся
иначе когда пишешь data["currentUser"]["currentstatus"].val().toString() возврящает пустую строку. Ну и с другими типами анологично |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
a1ien, не понял, откуда этот изврат код ? в какой ф-ции приходится так писать ?
почему, в каких случаях
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
a1ien |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Приведу чутка больше кода. Может бысть скажете еще где я неправ )) Это код моего AMF парсера.
грубо говоря readObject() это основная функция. Самым первым типом почти всегда идет DT_OBJECT. Вот части readObject().
и использование
Это сообщение отредактировал(а) a1ien - 3.4.2011, 12:09 |
||||||
|
|||||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
если так и было, то и при вызове нужно
и почему %3, а не %1 ? В общем, сделай простенький тест, и если не будет работать - тогда будем разбираться, а если у тебя в большой и сложной программе где-то что-то не отрабатывает, а в простом примере работает, то тут уж ... да поможет тебе отладчик ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
a1ien |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
%3 - просто это я когда тут постил удалил первые 2 длинны параметра. )
(*rObject)[className][k] нет там className уже ненужен UPD: код теперь такой
Есть строка
Mission /| res=double - это вывод Это сообщение отредактировал(а) a1ien - 3.4.2011, 13:05 |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
![]()
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
a1ien,
здесь у тебя получается не дерево, а просто ствол одноуровневый map. Почему ["currentUser"]["currentMissionsCount"] должен что-то возвращать ? Вот если бы ты записал в (*rObject) сначала ["currentUser"], а затем в этот полученый класс в ["currentMissionsCount"] записал что-то, то смог бы и вытащить. А у тебя получилось, что ты записал что-то сначала в (*rObject)["currentUser"], а затем в (*rObject)["currentMissionsCount"]. Будь добр так и вытаскивай:
этот вариант видел, но так меньше завязка на КуТю. Заменив QMap на std::map, QString на std::string и QVariant на TVariant, можно в (прости меня Господи) Билдере использовать -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
a1ien |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 2.6.2008 Репутация: нет Всего: нет |
Потому-что выше properties[propertyName] = readData(); у нас в рекурсии все это идет тоесть readData() возвращает мапу. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |