Bonjour à tous,
Je postes ici une source que j'ai développé pour un outil, au boulot. L'outil en question utilisait le contrôle "Microsoft Script Control"
- assignation multiples de variables
- evaluation d'expression logiques/numériques
bref, rien de bien complexe (pas de fonction, etc)
seulement, les multiples appels que je faisaient au controle Script ralentissaient énormément mon application. Je suppose que le controle Script a besoin de s'initialiser, de charger tout un tas de choses diverses et variées à chaque appel : on n'est surement pas supposé faire plein d'appels, mais de grouper ceux-ci...
Bref, j'ai décidé de coder un petit interpreteur de code, pour comparer les performances obtenues.
Succès, mon interpreteur a apporter un gain très sensible de vitesse, et je n'ai eu que très peu a modifier mon outil pour changer d'interpreteur.
je mets ce dernier a disposition aujourd'hui.
ne gère pas les racines, etc.
gère +-/^* And Or & = <> > < les parenthèses, la priorité des opérations, et il est également possible d'utiliser des variables.
Source / Exemple :
Private moScript As CTinyScript
Private Sub CcBtnExecute_Click()
moScript.Execute CcTxtLive.Text
End Sub
'------------------------------
For i = 0 To moScript.VarCount - 1
CcLstVars.AddItem moScript.VarName(i) & " = """ & moScript.VarValue(i) & """"
Next i
Conclusion :
quelques fonctions sont dispo
Left/Right/Mid avec un comportement particulier face aux valeurs négatives :
Left("Oscar",-2) => "Osc" (longeur-2)
Right("Oscar",-2) => "car" (longeur-2)
Mid("Australie",-5) => "ralie" (longeur-5)
Mid("Australie",-5,3) => "ral" (longeur-5)
Cos
Sin
Exp
Len
Format
StrReverse
IIf
Date
Now
2 août 2007 à 15:16
2 août 2007 à 15:05
Je pensais pas que c'était toi qui l'avais codé, mais que ça faisait parti du paramètre des 'fonctions vb' !!
Donc testé sans tes classes..
(et ouais, j'ai pas 'tout' lu dans tes classes, t'es trop fort pour moi) ;)
Enfin, puisses-tu me pardonner !
2 août 2007 à 14:36
Public Function DonneResultat() As Variant
Dim oScript As CTinyScript
Set oScript = New CTinyScript
DonneResultat = oScript.Evaluate(InputBox("Formule a calculer : "))
End Function
2 août 2007 à 14:33
(je viens d'insérer sans soucis dans un VBA... :/)
2 août 2007 à 14:28
merci pour tes explications (bien que je me doutais du résultat).
Mais rien à faire (et sur un autre pc que le mien), en vba, passe pas !
J'essaierai avec vb6 ;)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.