明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2681|回复: 7

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

[复制链接]
发表于 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
发表于 2003-10-21 11:55:00 | 显示全部楼层
最简单的就用Val函数吧,它会对参数首先进行计算,然后试着转换为数字。
如:Val(20-5*9)=-25。
发表于 2003-10-21 12:31:00 | 显示全部楼层
str(x) 将数值表达式转成字符串
chr(x)将ACS码转成字符
asc(x)将字符转成ACS码
val(x)将数字字符串转成数值
int(x)取整
cint(x)小数部分四舍五入
clng(x)转换成长整型数
cdbl(x)转换成双精度数
发表于 2003-10-21 12:47:00 | 显示全部楼层
用GEOMCAL.ARX就可以实现
发表于 2003-10-21 12:53:00 | 显示全部楼层
本帖最后由 作者 于 2003-10-21 16:11:59 编辑


如上图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 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
发表于 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
 楼主| 发表于 2003-10-21 14:39:00 | 显示全部楼层
我也是这么做的,看来只好如此了。不过总觉得不太习惯。
呵呵,算了,解决问题就行了吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 13:37 , Processed in 0.185649 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表