以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教如何判断表达式是否符合语法要求?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3081)

--  作者:易狐
--  发布时间:2009/6/10 8:08:00
--  请教如何判断表达式是否符合语法要求?
我们在用EVAL计算表达式的时候,一旦表达式不符合语法要求(也就是不能计算出结果的时候),系统会报错,比如:1、0做除数的时候    2、类似于这样1+2*3-      (也就是某一表达式计算符号前后少了一个数值)

如果能够进行表达式语法判断,就可以避免报错,没找到方法,谢谢赐教!
--  作者:狐狸爸爸
--  发布时间:2009/6/10 8:31:00
--  

好像是没有办法的,除非我改程序


--  作者:易狐
--  发布时间:2009/6/10 9:15:00
--  
以下是引用狐狸爸爸在2009-6-10 8:31:00的发言:

好像是没有办法的,除非我改程序


等您的好消息,否则的话,我只能在这里添加关闭错误提示语句来满足,其实也未尝不可,但是听您说一般不要用这个语句,所以还是希望您改一下程序(或者单改eval即可)


--  作者:yangming
--  发布时间:2009/6/10 9:32:00
--  
这个问题我在做注册系统时也出现过,就是如果出现的注册码位数不够时或是解密返回的是乱码时都会出现系统报错,而不是我所设置的MessageBox对话框
--  作者:易狐
--  发布时间:2009/6/10 9:49:00
--  
位数不够还好说,可以判断,乱码就不行,不过狐表有一个可以有一个忽略错误并继续运行代码的语句,在该代码段前面插入即可关闭错误提示,贺老师说不建议用,所以就没用,我得回去翻书查一查,都忘了!
--  作者:kylin
--  发布时间:2009/6/10 10:40:00
--  
捕捉错误的,供你参考
 

n = "Round(" &  s &"," & r &")"

Dim y As Double 

try

y= Eval(n)

Catch ex As Exception

MessageBox.Show("表达式输入错误!", "提示", MessageBoxButtons.ok, MessageBoxIcon.Warning)

End try


--  作者:yangming
--  发布时间:2009/6/10 10:44:00
--  
以下是引用kylin在2009-6-10 10:40:00的发言:
捕捉错误的,供你参考
 

n = "Round(" &  s &"," & r &")"

Dim y As Double 

try

y= Eval(n)

Catch ex As Exception

MessageBox.Show("表达式输入错误!", "提示", MessageBoxButtons.ok, MessageBoxIcon.Warning)

End try

我回头试试看看,先谢谢了


--  作者:狐狸爸爸
--  发布时间:2009/6/10 10:58:00
--  
这个捕捉错误的方法,可能对eval无效的。
我家一个判断功能吧。
--  作者:yangming
--  发布时间:2009/6/10 11:20:00
--  
以下是引用狐狸爸爸在2009-6-10 10:58:00的发言:
这个捕捉错误的方法,可能对eval无效的。
我家一个判断功能吧。

好啊,期待中


--  作者:kylin
--  发布时间:2009/6/10 11:23:00
--  
以下是引用狐狸爸爸在2009-6-10 10:58:00的发言:
这个捕捉错误的方法,可能对eval无效的。
我家一个判断功能吧。

惭愧