我正在尝试使用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;
我运行这个程序,但它总是返回零。有人能告诉我它有什么问题吗?文件内容正确读取。
最诚挚的问候,
答案 0 :(得分:6)
您在Javascript全局级别上调用return,这是不允许的。您可以使用QScriptEngine::hasUncaughtException
和QScriptValue QScriptEngine::uncaughtException
来确定javascript代码中的错误。
此外,您正在调用result.data()
来存储内部数据。所以
脚本应该是
x*x*x
打印输出:
cout<<"The result is "<<result.toInt32()<<endl;