VB 高手请进:悬赏100分帮我解决一个VB问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:18:11
如何将text1中的字符串作为FUNCTION函数引用。若在text1中输入x^2+5,如以下定义,运行结果却不是14,而是x^2+5
Private Sub Command1_Click()
Print f(3)
End Sub
Private Function f(x)
f = Text1.Text
End Function
以上代码中f = Text1.Text肯定错了,应该怎么修改?求教高手指正

Function f(x As String)
x = Replace(Text1, "x", x)
Dim calc As Object
Set calc = CreateObject("MSScriptControl.ScriptControl")
calc.Language = "vbscript"
f = calc.Eval(x)
End Function

Private Sub Command1_Click()
MsgBox f(5)
End Sub

Private Sub Form_Load()
Text1 = "x^2+5"
End Sub

1。主体用函数递归调用,并且在对表达式分析的时候要从右向左分析,(因为在处理象:9*3/3这样的表达式时候,有一个优先问题,下面再细说。)
2。注意其中的优先级问题。例如:()->^->*,/->+,-
3。从优先级低的地方把表达式分开成两段,之后递归对这两段再分析,直至到两个最简单的数相运算。
比如上面的那个9*3/3,从右开始:找到/后,分为:9*3和3,运算为/;对9*3分析后,分为:9和3,运算为*。然后,递归会帮你分析到底。
如果是从左到右的话,会出错的。

Text1.Text默认是字符型,而你想要的是整形,对吗
改成f = CInt(Text1.Text)应该就可以了