Hei Diamantus,
Du kannst natürlich auch externe Online-Mathe-Parser benutzen...
Mit Google läßt sich hervorragend rechnen, folgender Code funktioniert zwar, ist aber experimental.
Gruß
BernyH
Public Class Form1
'benötigt wird eine Form (Form1)
'benötigt wird ein Button (Button1)
'benötigt wird eine TextBox (Textbox1) zur Eingabe der Aufgabe
'benötigt wird eine TextBox (Textbox2) zur Anzeige des von Google geparsten
' Strings
'benötigt wird eine TextBox (Textbox3) zur Anzeige des Ergebnisses
'
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
'GoogleMathParser-Instanz
Dim gmp As New Cgmp(TextBox1.Text)
'wegen Webbrowser-Complete-Load-Event, warten, bis fertig
'Events erlauben
Do
If gmp.Parsed <> "" Then
If gmp.Parsed = "ERROR" Then
MsgBox("String konnte nicht geparst werden...")
Exit Do
Else
'Die von Google geparste Aufgabe mit Klammersetzung usw.,
' wenn die gesehen werden soll
TextBox2.Text = gmp.Parsed
'Das Ergebnis
TextBox3.Text = gmp.ResultDouble.ToString
Exit Do
End If
End If
Application.DoEvents()
Loop
End Sub
End Class
''' <summary>
''' GoogleMathParser
''' </summary>
''' <remarks></remarks>
Public Class Cgmp
Private WithEvents _webBrowser As New WebBrowser
Private _strParsed As String = String.Empty
Private _dblResult As Double = 0
''' <summary>
''' New
''' </summary>
''' <remarks></remarks>
Public Sub New()
End Sub
''' <summary>
''' Aufgabe übergeben
''' </summary>
''' <param name="Aufgabe"></param>
''' <remarks></remarks>
Public Sub New(ByVal Aufgabe As String)
ToParse(Aufgabe)
End Sub
''' <summary>
''' Zu errechnende Aufgabe
''' </summary>
''' <param name="s"></param>
''' <remarks></remarks>
Public Sub ToParse(ByVal s As String)
'
s = s.Replace("+", "%2B")
s = s.Replace("/", "%2F")
'
_webBrowser.Navigate( _
"http://www.google.de/search?hl=de&num=100&newwindow=1&q=" & s.Trim)
End Sub
Public Property Parsed() As String
Get
Return _strParsed
End Get
Set(ByVal value As String)
_strParsed = value
End Set
End Property
Public Function ResultDouble() As Double
Return _dblResult
End Function
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _
Handles _webBrowser.DocumentCompleted
Dim webseite As String = _webBrowser.DocumentText
'alle unerwünschten Tags entfernen
webseite = webseite.Replace("<", "")
webseite = webseite.Replace(">", "")
webseite = webseite.Replace(" ", "")
webseite = webseite.Replace(Chr(34), "")
webseite = webseite.Replace("/font", "")
webseite = webseite.Replace("2fontsize=-", "")
'Position der Aufgabe suchen
Try
Dim pattern As String = "font-size:138%b"
Dim anfang As Integer = webseite.IndexOf(pattern) + pattern.Length
Dim ende As Integer = webseite.IndexOf("/b", anfang)
Dim erg As Integer = webseite.Substring(anfang, ende - _
anfang).IndexOf("=")
_dblResult = CDbl(webseite.Substring(anfang, ende - _
anfang).Substring(erg + 1).Replace(".", ","))
Parsed = webseite.Substring(anfang, erg)
Catch ex As Exception
Parsed = "ERROR"
End Try
End Sub
End Class |