在vb中怎么把输入的字符串转换为算式?

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:06:07
在vb中怎么能把textbox中收到的字符串转换为表达式?比如我在text1中输入2*4,怎么在单击command1时在text1中计算出结果?
qsc800528 :
可以给一下代码吗?

VB中已经提供了相应的函数。
a=eval(Astr)
b=eval(Bstr)
即可,a和b变量即表达式的值。
除了运算算式值之外,还可以运算逻辑值。
如c=eval("1>3"),c的值为False

直接利用VB6提供的 Script Control 控件来做就行了,很简单又支持特别多的功能。如你所述要计算2*4,只需用此控件的eval方法,如 Ans=Script1.Eval("2*4") 就行了。当然用文本控件作为输入如:Ans=Script1.Eval(Text1.text) 。此控件支持复杂的数学运算式,同时也支持VB其它的属性、方法等的调用。

这个……怕你不懂,算了,反正我说了:

将中缀表达式转换成后缀表达式,然后入堆栈。用出堆栈的算法,加上case分支,进行运算,直到栈为空,返回结果。

请参考《数据结构》中相关内容:堆栈,字符串章节。

似乎VB6中没有这个函数,这里有个折中的方法,不过比较方便,方法如下:

新建一个模块,写入:
Public Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long

Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Long
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, fCheckOnly)
End Function

Public Function calc(ByVal x As String) As String
Dim result As String
Clip