Manchmal kommt man in die Not, einen frei eingebbaren mathematischen Ausdruck auswerten zu müssen.
Besonders bei der berühmten Taschenrechner-Applikation, die jeder einmal irgendwann in seinem Leben schreiben muss, lohnt es nicht, einen eigenen Parser dafür zu schreiben.
Visual Basic bietet eine einfache Möglichkeit, das zu bewerkstelligen. Das “Script Control” erledigt alles.
Hier ein Taschenrechner in seiner simpelsten Form:
Public Function Eval(ByVal iFormel As String) As Double Dim sc As ScriptControl On Error GoTo MyFehler Set sc = New ScriptControl sc.Language = "vbscript" Eval = sc.Eval(iFormel) Exit Function MyFehler: MsgBox "Formel '" & iFormel & "' kann nicht evaluiert werden!" & vbCrLf & "Fehler: " & Err.Description Exit Function End Function
Public Function Eval(ByVal iFormel As String) As Double Dim sc As ScriptControl On Error GoTo MyFehler Set sc = New ScriptControl sc.Language = "vbscript" Eval = sc.Eval(iFormel) Exit Function MyFehler: MsgBox "Formel '" & iFormel & "' kann nicht evaluiert werden!" & vbCrLf & "Fehler: " & Err.Description Exit Function End Function
Der Aufruf ist ebenso simpel:
Ergebnis = Eval(3*4+20/5) ' Ergebnis = 16
Ergebnis = Eval(3*4+20/5) ' Ergebnis = 16
Wie man erkennen kann, werden selbstverständlich mathematische Rechenregeln beachtet.
Wichtig: Unter Verweise muss im zugrundeliegenden Visual Basic Projekt ein Verweis auf “Microsoft Script Control x.x” gesetzt werden!
Natürlich steht es jedem frei, auch einen umfangreichen Parser zu schreiben, der den Ausdruck zerlegt und dann auswertet. Aber die oben gezeigte Möglichkeit finde ich wesentlich effektiver.

0 Kommentare.