QScriptEngine

Résolu
DrCrow Messages postés 416 Statut Membre -  
DrCrow Messages postés 416 Statut Membre -
Bonsoir a vous tous ...
je me suis lancé a utiliser le QScriptEngine, a faire des évaluation de donné , tout marche a merveille, mais en essayant cela, ( de mettre une fonction mathématique n'importe ....
QScriptEngine engine;
    engine.evaluate("qLn(2)");

suntaxe eRror, comme quoi la fonction ne peux pas etre lus par le moteur ....

msg d'erreur: ReferenceError: Can't find variable qLn

que dois je faire pour qu'il puisse lire les fonction math ....

Merci d'aVance :)

Doc !!

1 réponse

loupius Messages postés 789 Statut Membre 148
 
Comme indiqué par le message d'erreur, 'qLn' n'est pas connu; je ne sais pas d'où tu sors 'qLn'...
Essayes avec "log(2)" pour le népérien et "log(2)/LN10" pour le décimal.
Bonne continuation.
1
DrCrow Messages postés 416 Statut Membre 19
 
"" je ne sais pas d'où tu sors 'qLn'... ""

c'est la fonction de Logarithme Népérien propre a Qt ... ^^
inclus dans <QtCore/qmath.h>.... histoire de syntaxe :)

Sinon, en y testant aussi log(2) , sa ne marche toujours pas
msg d'erreur: ReferenceError: Can't find variable log

On m'avais conseillé de faire en sorte que le moteur reconnaisse ma fonction log() en créant une fonction avec ,
QScriptEngine::newFunction( ... ) 

mais , je ne sais pas comment en faire ( j'ai jamais utilisé cette class ) :( , meme avec la doc , sa reste un peu flous ... :(

exemple fourni dans la doc ( qt )
 static QScriptValue getSetFoo(QScriptContext *context, QScriptEngine *engine)
 {
     QScriptValue callee = context->callee();
     if (context->argumentCount() == 1) // writing?
         callee.setProperty("value", context->argument(0));
     return callee.property("value");
 }

 ....

 QScriptValue object = engine.newObject();
 object.setProperty("foo", engine.newFunction(getSetFoo),
     QScriptValue::PropertyGetter | QScriptValue::PropertySetter);


quelqu'un peu m'claircir ce point ... !!
mErcii
DOc !!
0
loupius Messages postés 789 Statut Membre 148
 
Cela doit fonctionner à condition de ne pas oublier de préciser 'Math.log(2)'.
Je ne connaissais pas 'qLn', peut-être est-ce récent ? Qt est si vaste ...
De toutes façons, QScript n'est pas proche de cette syntaxe, mais plutôt de JavaScript.
Les fonctions mathématiques compréhensibles par QtScript sont par exemple:
abs, cos, sin, tan, acos, asin,ceil, exp, floor, log, pow, sqrt, min, max et d'autres encore.
Bonne continuation.
0
DrCrow Messages postés 416 Statut Membre 19
 
effectivement, Math.log(2) a bien fonctionner , au contraire de qLn( 2 ) - dans une évaluation- ^^
je peux enfin reprendre mon code .... ^^

merci beaucoup pour ton aide, et bonne journée a toi

Doc !!
0