OVH Cloud OVH Cloud

Comment caculer la valeur d'une formule stockée dans une chaîne ?

4 réponses
Avatar
alain
Bonjour à tous.

Voilà, tout est dans le titre :

Je stocke dans des chaînes des formules de calcul ex : "OP1 +
(OP2/100)"

Un traitement remplace les OP1, OP2, etc, par leurs valeurs ce qui
donne par exemple : "12.54+(13.22/100)"

Problème, si je fais un val() sur cette chaine, j'obtient 12.54 en
résultat car l'évaluation s'arrête dès qu'elle rencontre autre chose
qu'un chiffre (dixit l'aide de WD).

Comment obtenir le calcul de cette chaîne ?

Je voudrais éviter de devoir construire un analyseur car les chaines
peuvent être complexes du type :
( OP1 + (3 * (OP4 -2) ) ) * ( (OP6/8) + 3.54 - (OP9-10) )

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

4 réponses

Avatar
Romain PETIT
alain vient de nous annoncer :
Bonjour à tous.



Bonjour,

Voilà, tout est dans le titre :
Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"


[...]
Comment obtenir le calcul de cette chaîne ?



Tu pourras le faire aisément avec la compilation dynamique.
F1 et recherche avec le mot clé "compile".

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
alain
Merci Romain, je n'y avais pas pensé.

Je vais faire des essais.

Romain PETIT a formulé ce vendredi :
alain vient de nous annoncer :
Bonjour à tous.



Bonjour,

Voilà, tout est dans le titre :
Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"


[...]
Comment obtenir le calcul de cette chaîne ?



Tu pourras le faire aisément avec la compilation dynamique.
F1 et recherche avec le mot clé "compile".

A+




--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
Roumegou Eric
alain vient de nous annoncer :
Merci Romain, je n'y avais pas pensé.

Je vais faire des essais.

Romain PETIT a formulé ce vendredi :
alain vient de nous annoncer :
Bonjour à tous.



Bonjour,

Voilà, tout est dans le titre :
Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"


[...]
Comment obtenir le calcul de cette chaîne ?



Tu pourras le faire aisément avec la compilation dynamique.
F1 et recherche avec le mot clé "compile".

A+





ou tu peux aussi utiliser les opérateurs d'indirections {"OP1"}+{"OP2"}


--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
alain
Merci Romain et Eric, ça marche du tonnerre ! :-)


alain avait énoncé :
Bonjour à tous.

Voilà, tout est dans le titre :

Je stocke dans des chaînes des formules de calcul ex : "OP1 + (OP2/100)"

Un traitement remplace les OP1, OP2, etc, par leurs valeurs ce qui donne par
exemple : "12.54+(13.22/100)"

Problème, si je fais un val() sur cette chaine, j'obtient 12.54 en résultat
car l'évaluation s'arrête dès qu'elle rencontre autre chose qu'un chiffre
(dixit l'aide de WD).

Comment obtenir le calcul de cette chaîne ?

Je voudrais éviter de devoir construire un analyseur car les chaines peuvent
être complexes du type :
( OP1 + (3 * (OP4 -2) ) ) * ( (OP6/8) + 3.54 - (OP9-10) )




--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net