- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要实现一个简单的数学表达式计算器,例如 1+2*(3.4 + 0.1)
我认为使用
实现这些东西会很容易QScriptEngine::evaluate()
但是有一个问题:一些无效的表达式被认为是有效的并且被评估为某些东西而不是产生错误。
例子:
QString expression = "1 + 2*("; // <---- wrong expression
auto checkResult = QScriptEngine::checkSyntax(expression);
if (checkResult.state() == QScriptSyntaxCheckResult::Valid)
{
QScriptEngine engine;
auto scriptResult = engine.evaluate(expression);
if (scriptResult.isValid() && scriptResult.isNumber())
{
double value = scriptResult.toNumber(); // <---- the value is 3.0, instead of an error
}
}
所以我的问题是:我是否遗漏了什么,有一种方法可以在使用 Qt 的 QScriptEngine::evaluate() 之前检查表达式的语法?
另一种方法是使用 Lepton 库(或类似库),但我不希望包含其他第 3 方组件。
最佳答案
不幸的是存在配置/Qt 问题。更新到最新的 Qt5.5 并重建项目解决了这个问题。谢谢@hyde。
关于c++ - QScriptEngine : bad expression considered valid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039232/
给出这段代码,我得到:“对'QScriptEngine::QScriptEngine() 的 undefined reference ” #include ... QScriptEngine e;
有人可以向我解释如何在 QScriptEngine 扩展中获得命名空间吗?我已经设置好了,所以我在 script/下有一个目录 foo/,其中正在执行一个 __init__.js 文件。 __setu
我想通过这个方法: QScriptValue ScriptProcessContext::construct(QScriptContext * ctx, QScriptEngine *) {
[问题] 假设我们喂 QScriptEngine使用以下脚本: var foo = 1; var bar = 2; foo + bar 来自QScriptEngine::evaluate() ,我们会
我使用 QScriptEngine::evaluate(QString code) 在我的 Qt 应用程序中评估 JavaScript .假设我评估了一段有问题的 JavaScript,它会永远循环(
我创建了一个 QScriptEngine 并公开了一个我可以从 js 脚本调用的对象函数。 engine->globalObject().setProperty("obj", myObj); myOb
我正在尝试优化我的一个函数中的 QScriptEngine 操作。 函数名为executeCustomJSOperation,它在多个文件中执行相同的JS代码。但是,每个文件都需要更改名为 $xmlD
让我们以一个简单的类为例: QScriptEngine engine; class MyClass { public: QScriptValue foo(QScriptContext*, QS
我需要访问 QWebFrame 中的 javascript QScriptEngine。这可能吗? 好吧,至少我认为我需要访问它。为了响应 javascript 调用,我需要分配一个新对象,将其返回给
我需要实现一个简单的数学表达式计算器,例如 1+2*(3.4 + 0.1) 我认为使用实现这些东西会很容易 QScriptEngine::evaluate() 但是有一个问题:一些无效的表达式被认为是
我需要在单独的非 GUI 线程中处理脚本,因为脚本调用 C++ 函数可能需要很长时间才能处理(秒)。是否可以在非 gui 线程中将 QScriptEngineDebugger 连接到我的 QScrip
我正在尝试将 QVariantMap 转换为 Qt Script 对象。如果我理解正确的话,它应该是这样的: QScriptEngine* engine = new QScriptEngine();
在Qt 4.8 的脚本引擎中,“本地”变量可以通过obtaining a QScriptContext from QScriptEngine::pushContext then setting the
[背景] QScriptEngine 的默认print() 函数将结果打印到 Qt Creator IDE 的终端以进行调试。因此,如果我们要自己制作 ECMA 脚本解释器,则必须将输出重定向到我们的
我是一名优秀的程序员,十分优秀!