中易网

怎么在vb6.0内把一个由运算式组成的字符串转换为运算式?

答案:3  悬赏:50  
解决时间 2021-01-30 15:09
比如“1+1”转化为1+1或者直接输出2
最佳答案
Function Eval(ByVal Expressions As String) As String '文本运算vbs
   Dim Mssc As Object
   Set Mssc = CreateObject("MSScriptControl.ScriptControl")
   Mssc.Language = "vbscript"
   On Error GoTo EvalErr
   Eval = Mssc.Eval(Expressions)
   Exit Function
EvalErr:
   Exit Function
End Function‘调用:例如:Eval(Text1)
全部回答
添加一个模块 加入下面的代码 (这是我自己写的自定义函数) 保存模块 'by 麦兜terran & sky public enum stringl 计算字符串长度 = 0 查找字符串 = 1 计算字符串出现次数 = 2 end enum public function sl(x, optional z as string, optional y as stringl = 0) select case y case 计算字符串长度 for j = 1 to ubound(split(x, vbcrlf)) for i = 1 to len(split(x, vbcrlf)(j)) sl = i next next case 查找字符串 for i = 1 to len(x) if mid(x, i, len(z)) = z then j = 1: exit for else j = 0 next sl = j case 计算字符串出现次数 for i = 1 to len(x) if mid(x, i, len(z)) = z then j = j + 1 next sl = j end select if x = "" then sl = 0 end function ------------ 现在你可以调用sl(文本,字符,类型) 比如 private sub form_click() print sl(text1.text, "abc", 2) end sub 计算abc出现的次数 当然你也可以直接写 sl(text1.text)得出text1的字符串长度类型默认为0 如果想查找字符串可以将类型写为1 private sub form_click() if sl(text1.text,"abc",1) = 1 then print "有abc" else print "没有abc" end sub 如果有该字符串返回1如果没有则返回0 你可以判断1和0来判断有没有"abc"
方法一:API函数 这是VBS的函数 方法二:自己写函数 Private Function Eval(ByVal String As String, Optional KH As Long) As Double  'KH你不用理他,是堆栈参数,自己调用     Dim i As Long,j As Long,k as long, l as Long,m as Long,n as Long, o As Long     If Ismissing(KH) Then '以下为找括号,j为第几个括号内,k为最大括号数         For i = 1 to Len(String)            Select Case Mid(String,i,1)                Case "("                    j=j+1                case ")"                    j=j-1            end select                if j<0 then '当前右括号大于左括号                        exit function                    elseif j>k then                        k=j                end if         next i         if k<>0 then exit function '左右括号数量不等         Eval=Eval(String,k) '调用自身         exit function     end if     For i = 1 to Len(String) '开始计算,找到最里层括号         select Case Mid(String,i,1)             case "("                 j=j+1             case ")"                 j=j-1         end select         If j=KH Then '最里层括号             For k = i+1 To Len(String) '找对应括号                 If Mid(String,k,1)=")" then '找到最里层括号                     l=k 'l为最里层右括号                     exit for                 end if             next i         End If         For m = j + 1 To l - 1 '幂运算^             if mid(String,m,1) = "^" Then                 for n = m-1 to j+1                     if not isnumeric(n) then exit for                 Next n                 o=n                 '……………………………………………………剩下的我还写不出来,等我几天 end function方法三:看蚂蚁的回答 方法四:自己引用
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
不报税的,只做流水账需不需要把采购的材料以
露华浓的品牌洛阳哪里有卖的
同情和怜悯,我不想要,不管是友情还是爱情
导致尿蛋白2+的原因是什么
东风风光360油泵线在哪里
bbc9.cn和英国的bbc有关系么???
下边弯的怎么办
58,赶集,百姓网哪个招聘群众演员更靠谱一点
女孩应该起什么名字,好听点,姓雷
《谢谢了我的家》观后感800字
农村建房,两层半。长11米宽9米。求设计(以9
电脑音响声音大小和耗电量有关么?
在美国结婚男方一分钱不出,全部由女方出吗?
入室盗窃75万元应判刑多少年
ug4.0怎么编刻凸字刀路,
推荐资讯
聊城这19处地方将有免费WIFI了,看看都在哪
路由器设置,安宽带时说的是动态IP,可是这里
一个陌生的长相中等的女生突然像你表白,你什
什么180战神复古传奇可以赚钱
在市区里,不看路牌怎么辨别方向啊,怎么依靠
出轨后的女人能相信吗
信用卡一个月没还最低还款对信誉度有影响吗?
我跟我女朋友已订婚,却又要分手?怎么办?
穿越火线活动一键领取2.2.4怎么安装
怎么样才能将硬盘格式化成 HFS+,只看见又说
微光摄影工作室(牡丹江东安区东二条路光华街
昌吉市楼中楼多少钱一平米
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?