QScriptEngine
-
Guten morgen,
folgender Sachverhalt:
ich parse eine XML-Datei und lese hierbei "Calculations" aus.
Mit QScriptEngine berechne ich dann die ausgelesene Formel aus meiner XML-Datei und schreibe diese in mein Tabelle in Qt.Nun muss ich aber einen vergleich durchführen.
Das auslesen der Formel bzw des "vergleiches" ist überhaupt kein Problem.
Ich weis leider nur nich wie ich mit QScriptEngine etwas vergleichen kann und ggf. dann "SCHLECHT" bei negativen vergleich und "GUT" bei positiven vergleich ausgeben kann.Mein Vergleich sieht folgendermaßen aus:
(valuex * valuey) < valuez
Jemand eine Idee wie ich das mit QScriptEngine hinbekommen kann?
-
QScriptValue fun = myEngine.evaluate("(function(x, y, z) { return (x * y) < z }"); QScriptValueList args; args << valuex << valuey << valuez; QScriptValue result = fun.call(QScriptValue(), args); bool res = result.toBool();
-
So eine ähnliche Lösung habe ich auch :)
Danke dir, das bestätigt mir schon mal das ich auf dem richtigen weg bin.QString Ergebnis; bool vergleich = false QScriptEngine = engine; vergleich = engine.evaluate("(x*y) < z)".toBool(); qDebug() << vergleich // "true"
meine frage jetzt:
Muss ich mit if meinen Text selber setzen oder kann das QScriptEninge schon selber?
Ich würde jetzt intuitiv wie folgt vorgehen:if (vergleich) { ergebnis = "GUT" } else { ergebnis = "SCHLECHT" }
-
@NotYourFan Ich bin nicht sicher, ob ich verstanden habe. Ich benutze Google Übersetzung. Das Ergebnis muss ein QString sein?
QString Ergebnis = engine.evaluate("(x*y) < z) ? \"GUT\" : \"SCHLECHT\"").toString()
Edit: Escape double quotes
-
Ja genau so will ich es haben.
Aber so wie du es schreibst funktioniert es nicht weil es mehrere Strings sind.QString Ergebnis = engine.evaluate("(x*y) < z) ? "GUT" : "SCHLECHT").toString()
Yes i Need exactly this what you write.
The Problem is that i get an error because there are to many Strings. -
@NotYourFan Sorry I was not awake this morning. I have edited my answer with escaped quotes
-
Thank you so mutch !!!!!