Скрипт в Qt не возвращает правильное значение - PullRequest
5 голосов
/ 20 мая 2011

Я пытаюсь использовать скрипт в Qt, вот очень простой код.

QCoreApplication a(argc, argv);

double x;

cout<<"Please enter a number: ";
cin>>x;
QFile file("cube.js");
if(!file.open(QIODevice::ReadOnly))
    abort();

QTextStream in(&file);
in.setCodec("UTF-8");
QString script=in.readAll();
file.close();
QScriptEngine interpreter;
QScriptValue operand(&interpreter,x);
interpreter.globalObject().setProperty("x",operand);
QScriptValue result=interpreter.evaluate(script);
cout<<"The result is "<<result.data().toInt32()<<endl;

return a.exec();

Содержимое cube.js всего одна строка:

return x*x*x;

Я запускаю эту программу, но она всегда возвращает ноль. Может кто-нибудь сказать мне, что в этом плохого? Содержимое файла правильно прочитано.

С наилучшими пожеланиями,

1 Ответ

6 голосов
/ 20 мая 2011

Вы вызываете return на глобальном уровне Javascript, что недопустимо. Вы можете использовать QScriptEngine::hasUncaughtException и QScriptValue QScriptEngine::uncaughtException для определения ошибок в коде JavaScript.

Также вы звоните result.data() для хранения внутренних данных. Так скрипт должен быть

x*x*x

И распечатка:

cout<<"The result is "<<result.toInt32()<<endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...