Cette fonction permet d'évaluer une expression.
Entendez par là que si je fais MsgBox Parse("4+5")
j'obtiens 9 !!
pour l'instant, vous ne pouvez utiliser que des opérateurs classiques, et les parenthèses ( + / - * ^ )
je vais sans doute ajouter des fonctions mathématiques
le principe est simple : je convertit l'expression en notation polonaise inverse (cf Web). En gros, 4+5 deviens 45+
pour pouvoir traiter des nombres, j'ai préféré obtenir 4;5;+;
ensuite, il suffit de regarder morceau par morceau......
6 juil. 2006 à 15:03
Private Function calcule(texte As String) As Long
Dim PosOp As Long
Dim Op As String
Dim Num() As String
PosOp = InStr(1, texte, "+")
If PosOp 0 Then PosOp InStr(1, texte, "-")
If PosOp 0 Then PosOp InStr(1, texte, "/")
If PosOp 0 Then PosOp InStr(1, texte, "*")
Op = Mid(texte, PosOp, 1)
Num = Split(texte, Op, 2)
If InStr(1, Num(1), "=") Then Num(1) = Left(Num(1), InStr(1, Num(1), "=") - 1)
If Calculable(Num(1)) Then Num(1) = calcule(Num(1))
If Calculable(Num(0)) Then Num(0) = calcule(Num(0))
If Op "+" Then Reponse Str(Val(Num(0)) + Val(Num(1)))
If Op "-" Then Reponse Str(Val(Num(0)) - Val(Num(1)))
If Op "/" Then Reponse Str(Val(Num(0)) / Val(Num(1)))
If Op "*" Then Reponse Str(Val(Num(0)) * Val(Num(1)))
calcule = Reponse
End Function
Private Function Calculable(texte As String) As Boolean
Possible = InStr(1, texte, "+") Or InStr(1, texte, "-") Or InStr(1, texte, "*") Or InStr(1, texte, "/")
Calculable = Possible
End Function
et sa marche ters bien
2 sept. 2005 à 13:59
Ton code fonctionne bien.
j'ai apporté quelques modifications pour le faire tourner sur .NET en thread.
Merci a toi !
22 févr. 2004 à 16:18
Fox
22 févr. 2004 à 16:14
22 févr. 2004 à 15:00
http://www.microsoft.com/france/msdn/info/info.asp?mar=/france/msdn/technologies/outils/vcsharp/info/20030710-Evaluateurs-Expressions.html
Fox
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.