XJ_HE 发表于 2003-10-20 16:45:00

如何计算用户输入的表达式的值?

本帖最后由 作者 于 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

efan2000 发表于 2003-10-21 11:55:00

最简单的就用Val函数吧,它会对参数首先进行计算,然后试着转换为数字。
如:Val(20-5*9)=-25。

gzy 发表于 2003-10-21 12:31:00

str(x) 将数值表达式转成字符串
chr(x)将ACS码转成字符
asc(x)将字符转成ACS码
val(x)将数字字符串转成数值
int(x)取整
cint(x)小数部分四舍五入
clng(x)转换成长整型数
cdbl(x)转换成双精度数

tukuitk 发表于 2003-10-21 12:47:00

用GEOMCAL.ARX就可以实现

tukuitk 发表于 2003-10-21 12:53:00

本帖最后由 作者 于 2003-10-21 16:11:59 编辑


如上图

XJ_HE 发表于 2003-10-21 13:42:00

呵呵,我决定采用二楼的做法。可是:
dim scgl as double
dim str as string
str = ThisDrawing.Utility.GetString(50,vbcrlf & "输入功率:")'一般这样:25-20

scgl=val(str) '这样根本不可能过去的。VAL可以将表达式转为数值,
                  ‘可是对于字串来说,不能完成啊

msgbox scgl

zeng29 发表于 2003-10-21 14:23:00

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

XJ_HE 发表于 2003-10-21 14:39:00

我也是这么做的,看来只好如此了。不过总觉得不太习惯。
呵呵,算了,解决问题就行了吧。
页: [1]
查看完整版本: 如何计算用户输入的表达式的值?