IDE EVAL (CALCULER AVEC TRÉS PEU DE CODE)

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 24 juil. 2007 à 20:41
vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011 - 25 juil. 2007 à 17:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43562-ide-eval-calculer-avec-tres-peu-de-code

vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011
25 juil. 2007 à 17:32
Merci pour vos comentaires et pour la note

En fait, je me suis inspiré de la source publiée par Renfield dans
http://www.vbfrance.com/code.aspx?ID=39620

C'est dômage qu'on ne puisse pas en faire un executable avec cette DLL, d'ailleurs un peu trop lourde, mais j'en suis sûr qu'il existe un moyen d'utiliser d'autres libraries installés d'origine sur Windows puisque il faut quand même évaluer des expressios de math en php ou java,etc dans les web pages et autres pages de script

En attendant je vais faire un tour s/interpreteur de Renfield
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
25 juil. 2007 à 16:06
En dotnet ça existe, j'ai quelques liens :
www.codeproject.com/csharp/expressionevaluator.asp
www.codeproject.com/dotnet/eval3.asp
www.codeproject.com/useritems/ExpressionFramework.asp
Je ne crois pas en avoir en VB6.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 14:22
vicosta, tu aurais pu faire ainsi :

Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long

Public mzEval As Variant

Public Function Eval(ByRef vsStatement As String) As Variant
Execute "mzEval = " & vsStatement
Eval = mzEval
End Function

Public Function Execute(ByRef vsStatement As String)
EbExecuteLine StrPtr(vsStatement), 0, 0, 0
End Function


ainsi, tu peux faire :
Execute "Msgbox ""Hello, World !"""
ou a = Eval("Resultat : " & 12*48)


ah oui, on est "un jour ou l'autre", j'ai posté mon interpreteur :
http://www.vbfrance.com/code.aspx?ID=43566
(ne gère pas toutes les fonctions etc, mais du coup, ben, pas besoin de dependance externe)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 13:48
me suis fait mon interpreteur perso, le Script Control fonctionnait, mais trop lent...
je pense que je vais le poster un jour ou l'autre...
aeder Messages postés 14 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 30 mars 2008
25 juil. 2007 à 13:25
Autre alternative pour ceux qui ont Excel : utiliser la fonction "Evaluate". Il suffit d'ajouter la référence Excel au projet et "Evaluate" est immédiatement accessible.
2 contraintes :
1. Diffuser la bibliothèque Excel dans le déploiement
2. Le client final doit impérativement posséder une licence Excel
à noter : à la 1ère utilisation de la fonction, il y a un petit délai d'attente (chargement de la dll); après c'est très rapide.
J'utilise cette fonction car tous mes clients ont Excel. Sinon, comme Bouv, j'utilise une variable de compilation pour utiliser la variante Script. Mais celle d'Excel est plus intéressante.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
25 juil. 2007 à 13:13
Une autre solution est d'utiliser le composant Microsoft Script Control 1.0 et ça fonctionne en compilé
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 13:02
au temps pour moi,
# => double
! => single
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
25 juil. 2007 à 12:31
dommage que cette méthode ne marche pas en compilé, cela m'aurait épargné bien des migraines pour ma version VB 2005 de calcul ..

Ah, et il me semble que le # est bien le signe des double non? en tout cas en VB 2005 c'est la cas..
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 juil. 2007 à 23:51
à noter que cette API n'est pas directement accessible dans un exe :
si tu compiles ton code, ton projet ne marcheras pas...

dans ton code, tu renvoies un Double
et tu ajoutes des # (marque des Single)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 juil. 2007 à 23:50
Comme tu l'as précisé, ne fonctionne pas en compilé...

tu devrais mettre ta var globale en Variant (a noter en Public et non en Global, ce mot clé n'étant qu'un reliquat d'une version precedente)
vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011
24 juil. 2007 à 20:59
Mes excuses, c'est fait
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juil. 2007 à 20:43
Manquerait bien quelque chose ...
- Un fichier ZIP ou un listing
- Un commentaire explicatif plus fourni (donne nous envie de charger ta source, dis-nous ce qu'elle sait faire ...)
Rejoignez-nous