Trucs et astuces : Compilation dynamique : des formules de calcul dans vos fichiers...
Posté par R&B le 5/7/2002 12:00:00 (4327 lectures) Articles du même auteur
Trucs et astuces

Il est parfois utile de rendre paramétrables des formules de calcul simples soit par un utilisateur, soit par une fenêtre de maintenance de l'application.

Voici donc une solution...


Cette solution ne s'applique qu'aux formules "simples".
C'est-à-dire celles mettant en oeuvre les opérateurs standards de calcul reconnus par WinDev (+-*/).
En effet, la formule va être interprétée dynamiquement par WinDev au moment de son exécution. Il ne s'agit donc pas de mettre en place un algorythme de calcul scientifique.

La solution est extrèmement simple à mettre en oeuvre.
Elle fait intervenir :

  • La construction des chaînes pour créer le code de la formule de calcul
  • la compilation dynamique pour la réalisation du calcul.


On peut construire la formule dans une rubrique texte.
Les variables (paramètres) sont identifiées par les chaines '%1' pour la première, '%2' pour la seconde...
On utilise la fonction ChaineConstruit pour créer la formule, d'où le besoin d'appeler les variables %1...

Exemple de formule: (3a + 2b)²

PROCEDURE Calcule(pnVar1 est un monetaire, pnVar2 est un monétaire)
// Retourne le résultat du calcul ou Null en cas d'erreur
  cFormule est une chaine = "(3*%1+2*%2)*(3*%1+2*%2)"
  nResultat est un monétaire
  // application des variables dans la formule
  cFormule=ChaineConstruit(cFormule,pnVar1,pnVar2)  // ici on obtient pour 5 et 6 : "(3*5+2*6)*(3*5+2*6)"
  // Réalisation du calcul
  CodeàCompiler est une chaîne = "renvoyer ("+cFormule+")"
  Res est une chaîne= Compile("CalcDyn", CodeàCompiler)
  SI Res = "" ALORS
    nResultat=ExécuteTraitement("CalcDyn", trtProcédure)
  SINON
    Erreur("Erreur compilation dynamique", Res)
    RENVOYER Null
  FIN
RENVOYER nResultat



Autres articles
2/6/2015 19:00:00 - WDForge 2.0 est disponible !
7/1/2014 11:10:00 - WDForge
30/9/2009 11:30:00 - Un analyseur d'objets externes
16/4/2009 18:37:49 - Convertisseur de base HyperFile vers XML
22/4/2008 23:04:01 - WLSCRIPT - Ligne de commande Linux

Connexion
Menu
Sujets d'Articles
Top Articles
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2