crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Parse error. Не выполняется скрипт в qt4.6.0
igor_bogomolov
  опции профиля:
сообщение 10.2.2010, 13:52
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Написал небольшой тестовый пример с использованием qscript.
main.cpp
#include <QtCore>
#include <QtGui>
#include <QtScript>

class Test : public QObject
{
    Q_OBJECT
public slots:
    void test()
    {
#ifdef ERROR
    qDebug() << "test1";
    QString sFunction = QString("a+b");
    QString sScript = QString("function(a,b){return %1;}").arg(sFunction);
#else
    qDebug() << "test2";
    QString sScript = QString("function(a,b) { return a+b; }");
#endif
    QScriptEngine scriptEngine;
    QScriptValue svFun = scriptEngine.evaluate(sScript);
    if (scriptEngine.hasUncaughtException()) {
        qDebug() << QString("Script error: %1").arg(sScript);
        qDebug() << svFun.toString();
    } else {
        qDebug() << QString("Script Ok!: %1").arg(sScript);
    }
    QScriptValueList args;
    args << 1 << 2;
    QScriptValue res = svFun.call(QScriptValue(), args);
    qDebug() << res.toInt32();
    }
};

#include "main.moc"

int main (int argc, char ** argv)
{
    QApplication app(argc, argv);

    QPushButton * button = new QPushButton("evaluate");
    Test * test = new Test();
    QObject::connect(button, SIGNAL(clicked()), test, SLOT(test()));

    button->resize(100, 30);
    button->show();

    return app.exec();
}
test.pro
QT += script
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

contains(QT_CONFIG, scripttools): QT += scripttools

# Input
SOURCES += main.cpp

C версией qt4.5.3 этот пример прекрасно работает. С версией 4.6.0 (sdk) при выполнении получаю сообщение
Цитата
"Script error: function( a, b ) { return a+b; }"
"SyntaxError: Parse error"
Помогите разобраться в чем может быть проблема? У кого есть возможность попробуйте скомпилить под разными версиями qt.
Прикрепленные файлы
Прикрепленный файл  test.tar ( 10 килобайт ) Кол-во скачиваний: 155
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 10.2.2010, 15:12
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Странно что в документации они это не везде поправили. В описании QScriptEngine написано
Цитата
The following code snippet shows how a script function can be defined and then invoked from C++ using QScriptValue::call():

QScriptValue fun = myEngine.evaluate("function(a, b ) { return a + b; }");
QScriptValueList args;
args << 1 << 2;
QScriptValue threeAgain = fun.call(QScriptValue(), args);
Считаю это ошибкой в документации.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 6:47