Petite correction (en effet Compile() renvoie "" si le code passé est OK) :
------------ s = "1 + (4 * 5)" si Compile("calcul", "renvoyer "+s)="" alors info(calcul()) Comple("calcul", "") fin ------------
Bugs
"SG" wrote in news:43956c8e$0$3696$:
Bonjour à tous,
je désire obtenir les résultats d'unen formule mathématique simple :
s est une chaine s = "1 + (4 * 5)"
comme obtenir le résultat ?
iTotal est un entier iTotal = calcul(s)
existe-t'il un composant ou une fonction pour faire ceci ?
D'avance merci pour votre aide ou tout indice pour résoudre mon petit problème.
Bonne journée
Jean-Jacques
Un petit indice, pour ce genre de chose, j'utilise la compilation dynamique C'est pas tres bien documenté, mais ça marche.
Le principe, c'est de créer le source d'une procédure qui fera le calcul a l'aide de ta chaine de caractère s, puis de la compiler en dynamique, et enfin de l'executer
procedure calcul(p_eval)
loc_source est une chaine loc_source="i est un entier"+cr loc_source="i="+p_eval+cr loc_source="RENVOYER i"
res=Compile("Proc_calcul",loc_source)
SI res<>"" ALORS // Erreur de compilation // Trouver un truc pour interrompre le traitement du programme RENVOYER Faux SINON RENVOYER Proc_calcul FIN
voila, en gros, a adapter à tes besoins
--------------- Julien (LFMH)
"SG" <sg@sg.sg> wrote in news:43956c8e$0$3696$ba620e4c@news.skynet.be:
Bonjour à tous,
je désire obtenir les résultats d'unen formule mathématique simple :
s est une chaine
s = "1 + (4 * 5)"
comme obtenir le résultat ?
iTotal est un entier
iTotal = calcul(s)
existe-t'il un composant ou une fonction pour faire ceci ?
D'avance merci pour votre aide ou tout indice pour résoudre mon petit
problème.
Bonne journée
Jean-Jacques
Un petit indice, pour ce genre de chose, j'utilise la compilation dynamique
C'est pas tres bien documenté, mais ça marche.
Le principe, c'est de créer le source d'une procédure qui fera le calcul a
l'aide de ta chaine de caractère s, puis de la compiler en dynamique, et
enfin de l'executer
procedure calcul(p_eval)
loc_source est une chaine
loc_source="i est un entier"+cr
loc_source="i="+p_eval+cr
loc_source="RENVOYER i"
res=Compile("Proc_calcul",loc_source)
SI res<>"" ALORS
// Erreur de compilation
// Trouver un truc pour interrompre le traitement du programme
RENVOYER Faux
SINON
RENVOYER Proc_calcul
FIN
je désire obtenir les résultats d'unen formule mathématique simple :
s est une chaine s = "1 + (4 * 5)"
comme obtenir le résultat ?
iTotal est un entier iTotal = calcul(s)
existe-t'il un composant ou une fonction pour faire ceci ?
D'avance merci pour votre aide ou tout indice pour résoudre mon petit problème.
Bonne journée
Jean-Jacques
Un petit indice, pour ce genre de chose, j'utilise la compilation dynamique C'est pas tres bien documenté, mais ça marche.
Le principe, c'est de créer le source d'une procédure qui fera le calcul a l'aide de ta chaine de caractère s, puis de la compiler en dynamique, et enfin de l'executer
procedure calcul(p_eval)
loc_source est une chaine loc_source="i est un entier"+cr loc_source="i="+p_eval+cr loc_source="RENVOYER i"
res=Compile("Proc_calcul",loc_source)
SI res<>"" ALORS // Erreur de compilation // Trouver un truc pour interrompre le traitement du programme RENVOYER Faux SINON RENVOYER Proc_calcul FIN
voila, en gros, a adapter à tes besoins
--------------- Julien (LFMH)
SG
super, immense merci à tous pour votre collaboration
voila ce que j'en ai fait :
PROCEDURE Calcul(sEval)
sSource est une chaîne sSource="i est un entier"+CR sSource+="i="+sEval+CR sSource+="RENVOYER i"
sRes est une chaîne sResultatCompile est une chaîne sResultatCompile = Compile("Proc_calcul",sSource)
SELON sResultatCompile CAS "" : sRes = ExécuteTraitement("Proc_calcul", trtProcédure ) CAS "ERR" : sRes = "Compilation impossible. "+ RC +ErreurInfo() AUTRE CAS : sRes = sResultatCompile FIN RENVOYER sRes
super, immense merci à tous pour votre collaboration
voila ce que j'en ai fait :
PROCEDURE Calcul(sEval)
sSource est une chaîne
sSource="i est un entier"+CR
sSource+="i="+sEval+CR
sSource+="RENVOYER i"
sRes est une chaîne
sResultatCompile est une chaîne
sResultatCompile = Compile("Proc_calcul",sSource)
SELON sResultatCompile
CAS "" : sRes = ExécuteTraitement("Proc_calcul", trtProcédure )
CAS "ERR" : sRes = "Compilation impossible. "+ RC +ErreurInfo()
AUTRE CAS : sRes = sResultatCompile
FIN
RENVOYER sRes
super, immense merci à tous pour votre collaboration
voila ce que j'en ai fait :
PROCEDURE Calcul(sEval)
sSource est une chaîne sSource="i est un entier"+CR sSource+="i="+sEval+CR sSource+="RENVOYER i"
sRes est une chaîne sResultatCompile est une chaîne sResultatCompile = Compile("Proc_calcul",sSource)
SELON sResultatCompile CAS "" : sRes = ExécuteTraitement("Proc_calcul", trtProcédure ) CAS "ERR" : sRes = "Compilation impossible. "+ RC +ErreurInfo() AUTRE CAS : sRes = sResultatCompile FIN RENVOYER sRes