我想在Visual Basic中製作一個(非常簡單的)圖形計算器,並且我使用ScriptControl,以便用戶可以輸入自己的公式,它將使用eval()
來獲得結果。Visual Basic ScriptControl不會寫入變量?
Public Class Form1
Dim sc As MSScriptControl.ScriptControl = New MSScriptControl.ScriptControl
Private Sub Form1_KeyPressed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.KeyPress, Me.Load
sc.Language = "VBScript"
sc.AddObject("x", 355, True)
sc.AddCode("Sub setx(xvalo)" + vbCrLf + "x = xvalo" + vbCrLf + "End Sub")
Me.CreateGraphics.DrawLine(Pens.Black, New Point(0, 200), New Point(5000, 200))
Dim eq As String = InputBox("Please enter equation:")
Dim y As Double = 0
For i As Double = 0 To 50 Step 0.01
sc.Run("setx", i)
y = sc.Eval(eq)
Me.CreateGraphics.DrawLine(Pens.Blue, New Point(i * 10, y * 10 + 200), New Point(i * 10 + 0.1, y * 10 + 0.1 + 200))
Next
End Sub
End Class
當我運行這一點,類型x + 2
甚至只是在提示框中x
,我得到一個異常:NotSupportedException: Object doesn't support this property or method: 'x'
但我剛纔添加X ...沒有人知道如何解決這一問題?
另一個奇怪的事情:它似乎是每當我嘗試編輯sc.AddCode()
參數,它說COMException was unhandled
。
快速谷歌搜索帶領我到這裏:http://en.kioskea.net/faq/18985-vb-evaluate-a-mathematical-expression-of-a-string,它是一個VB.NET實現你的東西需要。它可能不支持變量,但考慮它的實現方式,在其中添加它應該不是什麼大問題。可能還有其他(更好的)表達評估課程/圖書館 - 只是繼續搜索。 – Neolisk
如果你想自己寫一個,這裏有一些更多的鏈接:http://www.codeproject.com/Articles/9519/An-expression-evaluator-written-in-VB-NET和http://www.vb -helper.com/howto_net_evaluate_expressions.html – Neolisk
好的,謝謝你的回覆,我會盡快試用 – nbura