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
입니다.
빠른 google 검색을 통해 나를 이끌어 냈습니다. 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 and http : //www.vb -helper.com/howto_net_evaluate_expressions.html – Neolisk
좋아요, 답장을 보내 주셔서 감사합니다. 곧 사용해 보겠습니다. – nbura