![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 02.10.2011
Сообщений: 3
|
![]()
Есть такая задача: передаем строку в скрипт, а выводим из него численный массив. Я делаю так:
QScriptEngine engine; QString fileName(":/script.js"); QFile scriptFile(fileName); scriptFile.open(QIODevice::ReadOnly ); QTextStream stream(&scriptFile); QString contents = stream.readAll(); scriptFile.close(); - Ну тут все понятно, открываем скрипт. читаем и обозначиваем объект движка QString stroka ("12345123"); - Вот строка. взял её так просто, нужно понять принцип, а потом усложнять QScriptValue add = engine.globalObject().property("add "); Я завожу глобальный объект, который после будет обращаться в скрипт по имени функции QDebug () <<add.call (QScriptValue (), QScriptValueList () <<stroka) toVariant (). Вот я вызываю функцию и передаю строку в скрипт. Ниже простой скрипт: function add(stroka) { arr = Array; for (i=0; typeof(stroka[i])!=="undefined"; i=i+1){ arr[i]=stroka[i]; } return arr; } Дело в том, что выводит следующее: QVariant(QVariantMap, QMap(("0", QVariant(QString, "1") ) ( "1" , QVariant(QString, "2") ) ( "2" , QVariant(QString, "3") ) ( "3" , QVariant(QString, "4") ) ( "4" , QVariant(QString, "5") ) ( "5" , QVariant(QString, "1") ) ( "6" , QVariant(QString, "2") ) ( "7" , QVariant(QString, "3") ) ( "isArray" , QVariant(QVariantMap, QMap(("length", QVariant(double, 1) ) ( "name" , QVariant(QString, "isArray") ) ) ) ) ( "length" , QVariant(double, 1) ) ( "name" , QVariant(QString, "Array") ) ( "prototype" , QVariant(QVariantList, () ) ) ) ) Я дописывал в строку toMap (). - QDebug () <<add.call (QScriptValue (), QScriptValueList () <<stroka) toVariant () toMap ()..; и начало выводить следующее: QMap(("0", QVariant(QString, "1") ) ( "1" , QVariant(QString, "2") ) ( "2" , QVariant(QString, "3") ) ( "3" , QVariant(QString, "4") ) ( "4" , QVariant(QString, "5") ) ( "5" , QVariant(QString, "1") ) ( "6" , QVariant(QString, "2") ) ( "7" , QVariant(QString, "3") ) ( "isArray" , QVariant(QVariantMap, QMap(("length", QVariant(double, 1) ) ( "name" , QVariant(QString, "isArray") ) ) ) ) ( "length" , QVariant(double, 1) ) ( "name" , QVariant(QString, "Array") ) ( "prototype" , QVariant(QVariantList, () ) ) ) Я посмотрел еще упрощение и дописал значения (). - QDebug () <<add.call (QScriptValue (), QScriptValueList () <<stroka) toVariant ().toMap ().values(); И выводит следующее: (QVariant(QString, "1") , QVariant(QString, "2") , QVariant(QString, "3") , QVariant(QString, "4") , QVariant(QString, "5") , QVariant(QString, "1") , QVariant(QString, "2") , QVariant(QString, "3") , QVariant(QVariantMap, QMap(("length", QVariant(double, 1) ) ( "name" , QVariant(QString, "isArray") ) ) ) , QVariant(double, 1) , QVariant(QString, "Array") , QVariant(QVariantList, () ) ) Вот тут я и застрял, так как дальнейшее преобразование у меня просто не получается, да и в теле функции оно будет лишнее. Нужна помощь в переписании самого скрипта и получении из него только значений в массив, а не бесполезной кучи, которую надо преобразовывать. Последний раз редактировалось raks123; 02.10.2011 в 20:16. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 02.10.2011
Сообщений: 3
|
![]()
Нашел решение))) скрипт остался таким же, а основную функцию пришлось подправить:
QScriptValue variant; engine.evaluate(contents); QScriptValue add = engine.globalObject().property("add "); variant = add.call(QScriptValue(), QScriptValueList() << stroka ); QScriptValueIterator it(variant); while(it.hasNext()){ it.next(); if (!(it.flags() && QScriptValue::SkipInEnumeration)) { qDebug()<<it.name()<<": " <<it.value().toInteger(); } } Наконец то начало выводить следующее: "0" : 1 "1" : 2 "2" : 3 "3" : 4 "4" : 5 "5" : 1 "6" : 2 "7" : 3 |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод результата работы скрипта в модальном окне | snikers987 | JavaScript, Ajax | 2 | 06.06.2011 23:27 |
Вывод текста из PHP скрипта | Dominatorsha | PHP | 1 | 13.12.2010 12:06 |
Тест скорости инета и вывод скрипта | bionicle12 | PHP | 6 | 06.09.2010 10:28 |
Динамический вывод результата выполнения php скрипта. | amdbodia | JavaScript, Ajax | 26 | 21.01.2010 23:23 |
Вывод значений из скрипта на страничку | Salomon | HTML и CSS | 3 | 17.03.2009 15:42 |