您的位置:程序门 -> vb -> 基础类



有个计算的问题,请高手来解答一下~!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


有个计算的问题,请高手来解答一下~!![已结贴,结贴人:tces_net]
发表于:2007-05-28 12:07:55 楼主
用vb想实现一下这样一个问题:
          在一个文本框里输入一个复合运算的式子,如:((0.08+0.27+0.03)+0.1+(0.9+0.5))*(18.8-2.8)*8;在别一个文本框里即时得出结果,请问应怎么写程序,
想了好久,没有好的办法,请高手指点~!!!!
发表于:2007-05-28 12:38:291楼 得分:30
参考这个帖子里面我的回答:

http://community.csdn.net/expert/topicview3.asp?id=5540075
发表于:2007-05-28 12:45:472楼 得分:0
记得scriptcontrol控件里有个计算的方法......忘了
发表于:2007-05-28 12:57:573楼 得分:0
不用控件的话得一个一个取,好象很麻烦
发表于:2007-05-28 13:59:524楼 得分:0
option   explicit

private   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   boolean
EXECuteline   =   ebEXECuteline(strptr(scode),   0&,   0&,   abs(fcheckonly))   =   0
end   function


sub   calc(byval   x   as   double)
dim   result
EXECuteline   "dim   x   as   double "
EXECuteline   "x=   "   &   x
EXECuteline   "clipboard.settext   x "
result   =   clipboard.gettext
msgbox   x   &   "= "   &   result
set   result   =   nothing
end   sub

private   sub   command1_click()
calc   text1
end   sub

private   sub   form_load()
text1.text   =   "1+2*3-4/5 "
end   sub

————————————————————————————
算式比较大的时候出现溢出,要怎么修改呢

发表于:2007-05-28 14:13:335楼 得分:0
你应该先去看看模式匹配的算法,然后就会明白了
发表于:2007-05-28 14:18:526楼 得分:0
你说是是什么算法啊,这段代码没看明白!~~请教!
发表于:2007-05-28 15:11:157楼 得分:0
怎么没有人啊,急啊~~!!!
发表于:2007-05-28 15:17:188楼 得分:50
option   explicit

private   sub   command1_click()
                    dim   test           as   string
                    dim   scr   as   object
                    test   =   "((0.08+0.27+0.03)+0.1+(0.9+0.5))*(18.8-2.8)*8 "
                    set   scr   =   createobject( "msscriptcontrol.scriptcontrol ")
                    scr.language   =   "vbscript "
                    msgbox   test   &   "= "   &   scr.eval(test)
    end   sub
发表于:2007-05-28 15:19:099楼 得分:0
下面的帖子详细讨论了表达式计算:
http://topic.csdn.net/t/20040801/14/3231596.html
发表于:2007-05-28 15:20:2810楼 得分:0
顺便说一下ebEXECuteline只能在vb的ide中运行
发表于:2007-05-28 15:27:2411楼 得分:0
哪你用的这是什么算法?
发表于:2007-05-28 15:33:1012楼 得分:20
引用microsoft   script   control   1.0
        dim   ax   as   new   msscriptcontrol.scriptcontrol
        ax.language   =   "vbscript "
        debug.print   ax.eval(text1.text)

找了一个小时,2000年时写了,一点也不记得了,哎!这脑袋真的是很不好用了。
发表于:2007-05-28 15:35:5813楼 得分:0
能实现以,但是现在还是不太明白,慢慢学习吧,以后还得请教大家,给分了,呵呵!!!


快速检索

最新资讯
热门点击