如何计算用户输入的表达式的值?
本帖最后由 作者 于 2003-10-21 13:59:49 编辑如何计算用户输入的表达式的值?
如下:
请输入功率:20-5*9
如果用户输入以上表达式,那么我如何得到最后的值:-25
??请问有没有简单的方法?
dim scgl as double
dim str as string
str = ThisDrawing.Utility.GetString(50,vbcrlf & "输入功率:")'一般这样:25-20
scgl=val(str) '这样根本不可能过去的。VAL可以将表达式转为数值,
‘可是对于字串来说,不能完成啊
msgbox scgl 最简单的就用Val函数吧,它会对参数首先进行计算,然后试着转换为数字。
如:Val(20-5*9)=-25。 str(x) 将数值表达式转成字符串
chr(x)将ACS码转成字符
asc(x)将字符转成ACS码
val(x)将数字字符串转成数值
int(x)取整
cint(x)小数部分四舍五入
clng(x)转换成长整型数
cdbl(x)转换成双精度数 用GEOMCAL.ARX就可以实现 本帖最后由 作者 于 2003-10-21 16:11:59 编辑
如上图 呵呵,我决定采用二楼的做法。可是:
dim scgl as double
dim str as string
str = ThisDrawing.Utility.GetString(50,vbcrlf & "输入功率:")'一般这样:25-20
scgl=val(str) '这样根本不可能过去的。VAL可以将表达式转为数值,
‘可是对于字串来说,不能完成啊
msgbox scgl Val函数并不能返回以字符串形式保存的表达式的值,在AutoCADVBA中可以用以下代码,但调用时,字符串形式的表达式必须是合法的数学表达式.
Sub CalExample()
MsgBox CalExp("20-5*9")
End Sub
Public Function CalExp(sExp As String) As Double
Dim Temp As Double
Temp = ThisDrawing.GetVariable("userr1")
ThisDrawing.SendCommand "setvar userr1 " & "'cal " & sExp & vbCr
CalExp = ThisDrawing.GetVariable("userr1")
ThisDrawing.SetVariable "userr1", Temp
End Function 我也是这么做的,看来只好如此了。不过总觉得不太习惯。
呵呵,算了,解决问题就行了吧。
页:
[1]