Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: semlanik от Февраль 02, 2010, 17:22



Название: как распарсить reply от DBus?[solved]
Отправлено: semlanik от Февраль 02, 2010, 17:22
Делаю запрос к dbus. В реплае получаю следующую штуку:
Код:
$ dbus-monitor --session
...
   array [  
          array [
                string "value"
                string "value"
                string "value"
                  ]                                                                                                                                            
   ]
...
как такого рода структуру дернуть (сохранив ее желательно) из QDbusMessage::arguments()?


Название: Re: как распарсить reply от DBus?
Отправлено: panAlexey от Февраль 02, 2010, 17:37
по хорошему надо искать парсер и прочие прибамбасы в дебрях самого DBus.


Название: Re: как распарсить reply от DBus?
Отправлено: Rcus от Февраль 02, 2010, 17:44
В справке по QDBusArgument уже есть пример десериализации пользовательских типов.


Название: Re: как распарсить reply от DBus?
Отправлено: semlanik от Февраль 02, 2010, 17:49
а не пошлете меня туда? чет я в асистенсе не могу найти самплы с ним связанные.


Название: Re: как распарсить reply от DBus?
Отправлено: semlanik от Февраль 02, 2010, 17:52
в общем-то сообразил про что вы наверно
сейчас буду пытать спасибо )


Название: Re: как распарсить reply от DBus?
Отправлено: semlanik от Февраль 02, 2010, 18:11
Может быть у кого-то есть готовый рецепт?


Название: Re: как распарсить reply от DBus?
Отправлено: BRE от Февраль 02, 2010, 18:50
Скорее всего он пытается вернуть QVariantList, в котором лежит QStringList.


Название: Re: как распарсить reply от DBus?
Отправлено: panAlexey от Февраль 02, 2010, 18:56
Может быть у кого-то есть готовый рецепт?
См. законы Мерфи:
- Если что-то не получается, прочти наконец инструкцию....
пс. самый клевый рецепт в твоей ситуации.....


Название: Re: как распарсить reply от DBus?
Отправлено: semlanik от Февраль 02, 2010, 19:10
О боже... система была примерно такой: Игла в яйце, яйцо в утке, утка в зайце, заяц в а??е! Победили вот так:
Код:
        QList<QVariant> list;
        QDBusArgument arg;
        QDBusMessage response;
        ...
        list=response.arguments();
        arg=list.at(0).value<QDBusArgument>();

        arg.beginArray();
        while ( !arg.atEnd() )
        {
            QStringList element;
            arg >> element;
            qDebug()<<"Element:"<<element;
        }
        arg.endArray();

Всем спасибо )

изменено: цензура


Название: Re: как распарсить reply от DBus?[solved]
Отправлено: ритт от Февраль 03, 2010, 16:45
а не проще

Код:
       QList<QVariant> list;
        QDBusArgument arg;
        QDBusMessage response;
        ...
        list=response.arguments();
        arg=list.at(0).value<QDBusArgument>();

        QList<QStringList> res;
        arg >> res;

??