VB,表达式计算函数!

town 2000-07-23 11:51:00
谁有或知道哪儿下下载?
...全文
572 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
NetMan1999 2000-10-08
  • 打赏
  • 举报
回复
如过只是计算简单的数字运算,首先将表达式转变为逆波兰表达式,然后通过一个栈将逆波兰表达式计算出来
town 2000-07-28
  • 打赏
  • 举报
回复
czh918:
我正是要访问数据库,而且是大数据量数据库。我以前曾考虑这个方法,简单准确,但它只适于少量数据,而我的情况是从几十上百万条记录中统计出几千上万条数据,本身就很慢了,再单独让它来一条条算的话,更慢,所以没有采用。
需要说明的是,我的表达式不是Select时就写入SQL字段列表的,是先Select出来之后再根据字段组合成表达式计算的。
czh918 2000-07-28
  • 打赏
  • 举报
回复
如果你有使用到数据库的话,可以用sql 的select 来帮你算
Un1 2000-07-28
  • 打赏
  • 举报
回复
你的理解正确。不需要,AddObject name, obj, true 中的true已指明显露obj的所有接口到script中,效果就象vb的函数一样:

a = abs(-9) 与 a = vba.abs(-9)相同。
town 2000-07-28
  • 打赏
  • 举报
回复
Tyro :MSScript.ocx也许是VC或VI带的,因为VB中我没有发现。
Firing_Sky :你倒还提醒了我!
Un1 :还是不懂。是否要自定义一个类,在类中声明该函数,然后加入该类,"Application"是否在表达式串中要加的前缀,如"Application.Format"。

Firing_Sky 2000-07-27
  • 打赏
  • 举报
回复
自己写一个嘛,《数据结构》里有例子的呢! ^_^
Tyro 2000-07-27
  • 打赏
  • 举报
回复
vs6怎么会是Visual SourceSafe?应该是Visual Studio 6.0的意思呀!
Un1 2000-07-27
  • 打赏
  • 举报
回复

With gscCalc

.AddObject "Application", gclsApp, True
Un1 2000-07-26
  • 打赏
  • 举报
回复
MSScript.ocx是vs6的自带控件。
你可以编写一个类带有:

Public Function Format(Expression As Variant, Optional FormatExp As Variant, Optional FirstDayOfWeek As Variant, Optional FirstWeekOfYear As Variant) As Variant
Format = VBA.Format(Expression, FormatExp, FirstDayOfWeek, FirstWeekOfYear)
End Function

然后用AddObject 方法把它的一个实例加入到Script环境,这样Script就具有了Format函数的能力。
town 2000-07-26
  • 打赏
  • 举报
回复
是Visual SourceSafe带的?难怪在其它机子上找不到。
AddObject我试了一下,不知怎么加,麻烦你再说明一下好吗?
TopHead 2000-07-24
  • 打赏
  • 举报
回复
该控件叫:

Microsoft Script Control

在VB的引用中可以找到,下面是个简单例子:

Private Sub Form_Click()
With ScriptControl1
.Language = "VBScript"
End With

Dim abc As String
abc = "123456789"

Dim sExp As String
sExp = "Mid(" & abc & ",1,2)"

Dim sRet As String
sRet = ScriptControl1.Eval(sExp)

MsgBox sRet

End Sub

上面的例子是原来该门诊中别人写的:)

不知道解决你的问题没有?:)
Un1 2000-07-24
  • 打赏
  • 举报
回复
不是Scripting是Microsoft Script Control(MSSCRIPT.ocx)
Limu 2000-07-24
  • 打赏
  • 举报
回复
老兄,你可以直接用VB带的Scripting 控件。这个控件可以运行VBScript和JavaScript脚本语言,VB的语法和VBScript语法类似,你用这个控件是肯定可以执行任意的表达式。不过你可能要在引用里才能找到它。
town 2000-07-24
  • 打赏
  • 举报
回复
该控件不能使用VBScript的Format函数!
town 2000-07-24
  • 打赏
  • 举报
回复
VBScropt.OCX是WIN98或WINNT或WIN2000或IE或VB哪个自带的控件?
town 2000-07-24
  • 打赏
  • 举报
回复
我知道这个控件(MSScript.ocx),但我不想将我的这个程序做得太垃圾,也不需要函数计算,只需要计算数字表达式,+-*/MOD(),如((2+3/5*6) mod 2 - 56.7)*2.3/67,当然可以嵌函数最好。
表达式计算说明 很久就想编一个这样的计算器,只可惜一直没什么思路,最近突然灵感来了,所以就写下 这个程序。现在还在测试阶段,所以功能不是很完善。 程序功能:基本的表达式运算,可以自定义函数跟常量,分别保存在 “常数.txt” 和 “函数.txt”,方便自己添加。双击相应的函数名或常数名就可以将函数或常量添加到表达式中。 计算过程只能当表达式只有一行时有效。 实例1:计算sqr(19+tan(98)*tan(91)-sin(122)*(5*5-(19-11)))/2 计算过程sqr(19+tan(98)*tan(91)-sin(122)*(5*5-(19-11)))/2 =sqr(19+-7.11536972238419*tan(91)-sin(122)*(5*5-(19-11)))/2 =sqr(19+-7.11536972238419*-57.2899616307588-sin(122)*(5*5-(19-11)))/2 =sqr(19+-7.11536972238419*-57.2899616307588-.848048096156426*(5*5-(19-11)))/2 =sqr(19+-7.11536972238419*-57.2899616307588-.848048096156426*(5*5-8))/2 =sqr(19+-7.11536972238419*-57.2899616307588-.848048096156426*17)/2 =20.3032618253667/2 =10.1516309126834 实例2:计算 a=34 b=55 c=a+1 圆的面积(c) a*b c=a+b 圆的面积(c) 以下是计算结果: 圆的面积(c)=3848.4510006475 a*b=1870 圆的面积(c)=24884.5554090847 内置函数: !(x) - x 的阶乘 lg(x),log(x) 以10为底的对数 ln(x) 以 e为底x的对数 pow(x,y) x的y方次幂 prime(x) 判定x是否是素数,如果是直接将s2返回,否则将其各因子用连乘返回 sqr(x),sqrt(x) - x 的二次方根 arcsin(x) - x 的反正弦 arccos(x) - x 的反余弦 arcsec(x) - x 的反正割 arccsc(x) - x 的反余割 atn(x),arctg(x) - x 的反正切 arcctg(x) - x 的反余切 sin(x) - x 的正弦 cos(x) - x 的余弦 sec(x) - x 的正割 csc(x) - x 的余割 tg(x),tan(x) - x 的正切 ctg(x) - x 的余切 harcsin(x) - x 的反双曲正弦 harccos(x) - x 的反双曲余弦 harcsec(x) - x 的反双曲正割 harccsc(x) - x 的反双曲余割 harctg(x),harctan(x) - x 的反双曲正切 harcctg(x) - x 的反双曲余切 hsin(x) - x 的双曲正弦 hcos(x) - x 的双曲余弦 hsec(x) - x 的双曲正割 hcsc(x) - x 的双曲余割 htg(x),htan(x) - x 的双曲正切 hctg(x) - x 的双曲余切 有什么意见或建议可以跟我联系Email: ldm.menglv@gmail.com

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧