thesastej

所属分类:进程与线程
开发工具:Delphi
文件大小:46KB
下载次数:1
上传日期:2018-12-21 01:20:02
上 传 者buguy
说明:  此为监控系统的协议解释器中的表达式计算程序原型,可用于表达式的计算
(This is the prototype of the expression evaluation program in the protocol interpreter of the monitoring system, which can be used to calculate the expression)

文件列表:
Sample\complex.txt (472, 2017-11-06)
Sample\simple.txt (1455, 2017-11-06)
关于“逍遥表达式求值控件”的注册与源代码的购买.txt (275, 2017-11-06)
逍遥表达式求值控件范例程式.exe (40960, 2017-11-06)
XoYoMathXP.lib (2646, 2017-11-06)
XoYoMathXP.exp (1002, 2017-11-06)
1oForm1.frm (7782, 2017-11-06)
I7Form1.frx (9696, 2017-11-06)
XoYoMathXP.oca (10240, 2017-11-06)
XoYoMathXP.ocx (90112, 2017-11-06)
oNMSSCCPRJ.SCC (535, 2017-11-06)
逍遥表达式求值控件范例程式.vbp (805, 2017-11-06)
逍遥表达式求值控件范例程式.vbw (50, 2017-11-06)
Sample (0, 2018-11-09)

==================================================================== 逍遥表达式求值控件(XoYoMathXP)说明文档 ==================================================================== 软件名称:逍遥表达式求值控件(XoYoMathXP) 软件版本:V3.4 (Build 2003.0826) For Windows 授权形式:共享(有条件免费) 用户最终协议: 1.如果您未将本控件用与任何商业目的,那么可以免费使用本控件! 2.不对本软件进行拆解,保证本软件的完整性。 3.不删除或修改本软件(包括程序和与之相关的所有文档)的版权声明。 4.不对本软件进行反编译。 5.不利用本软件从事任何的非法活动。 6.如果您是免费用户,还请您必须在您用此控件开发的软件的“关于”对话框中注明本控件的作者姓名及相关版权信息(具体内容可参考控件的“关于”对话框)。 7.作者并不保证本软件在任何条件下的安全性。因此,使用本软件的全部风险由用户承担。 8.本软件产品受中华人民共和国版权法及国际版权条约和其他知识产权法及条约的保护。用户获得的只是本软件产品的使用权。 9.本软件产品的版权归作者李建华所有,受到适用版权法及其他知识产权法及条约的保护。 技术支持:xoyosoft@163.com 主页:http://xoyosoft.wx-e.com/chs/ -------------------------------------------------------------------- 功能简介:   XoYoMatheXPression是一个功能超强的用于表达式分析与计算的ActiveX控件。可以对由字符串组成的数值表达式进行多种求值运算。目前本控件支持的功能有:   1.四则混合运算   2.逻辑运算   3.关系运算   4.常用函数 (1.0版30个) (2.0版41个,开始支持参数个数>1的函数)   5.允许常量表达式,如PI,E,TRUE,FALSE等   6.支持运算符与函数名“重用”(即可以使用别名,这主要是为了满足人们的不同使用习惯而设计的),如%与mod等同,都用于求余数;ln与log等同都是用来求参数的自然对数;sh与hsin等同,都是用来求参数的双曲正弦等。   7.支持嵌套格式(理论上允许无限嵌套) 8.可以自动侦错(侦错的方式可以自行设置,如可以显示错误信息对话框,也可以进行错误信息的“屏蔽”,即出错时不显示错误信息对话框,这样使得程序设计时灵活性更大。)可以取得错误号,修改错误信息窗体的标题(2.0版)。   9.支持数组(表)的运算 (2.0版) 10.支持“拟精确运算” (2.0版) 11.计算结果可以字符串与数值两种不同的格式返回(2.0版) 12.所有的表达式元素(主要指字母)可以大小写混用,不用再区分。(2.0版) 13.被求值的表达式支持全角与半角的混合字符串(2.1版)   14.被求值的表达式支持“科学记数法”模式(2.1版) 15.被求值的表达式支持自定义的变量标识符,提供了相应的变量处理功能(3.0版) 16.被求值的表达式可以包含有注释语句(3.0版) 17.新增立即条件函数IIF(3.1版)   使用这个控件可以让您的程序很轻松的实现“自定义运算”等很多强大的功能,从而使得开发通用的数据计算与处理程序不再困难。同时此控件也非常适合用于电子表格及通用函数绘图程序和教学课件(比如一些与数学相关的多媒体课件等)的开发。 修正与改进: 3.4版修正了以前版本中的一些Bugs。   3.3版修正了3.2版及以前所有版本中的变量列表中下标越界的问题。   3.2版的XoYoMathXP修正了以前版本中存在的在进行连续乘方的运算时的一个Bug(感谢隋祥兄的Bug报告),也修正了控件属性“ErrorNumber”有时不能正确显示出错号的问题(感谢陈沁兄的Bug报告)。同时,控件取消了对连续单目运算次数的限制。功能比以前更为强大。 ******************************************************************** 使用说明: (注:如果您的机器上已经存在了与此版本不同的XoYoMathXP控件,则有可能会使此版本的范例程序不能正常运行,如果出现这种情况,您只要将此版本的控件重新注册一下就可以了,或者用VB6直接打开工程文件来运行也可以) (注:如无特殊声明,控件的功能由高版本向低版本兼容,而对于一些改动较大的地方,作者会在下文中进行具体的说明。) A.基本运算 1.运算符(使用方法:操作数1 运算符 操作数2) (注:“()”中的标识符为运算符的另一种写法(即别名),亦可用于表达式中) 控件目前支持的运算符如下: + 加 - 减 * 乘 / 除 \ (div)求商 % (mod)求余数 ^ 乘方 (规定:0^0=1) = 赋值运算 == 等于 (注3.0中“=”被用来当作赋值号,而“==”表示等于,这样就与C语言的表示方式一致了) > 大于 < 小于 >= 大于或等于 <= 小于或等于 <> 不等于 & (and)逻辑与 | (or)逻辑或 ! (xor)逻辑异或 ~ (eqv)逻辑等 , 逗号运算符。(2.0版)(功能有二:1.类似于C语言中的用法,所得结果为逗号运算表达式中,最后一个表达式的结果;2.用于分隔函数的各个参数。) 2.括号标记(须成对出现且均用小括号) ( 左括号 ) 右括号 3.函数(使用方法:函数名(表达式表)) (注:“()”中的标识符为函数名的另一种写法(即别名),亦可用于表达式中,而且所有三角函数均用弧度为变量参数。这里的函数名主要是按照《高等数学》(第四版)的命名规则来取的。) 控件目前支持的函数如下: (1.0版) not 求非运算 angtorad (ator) (别名2.0版新增)角度化弧度 radtoang (rtoa) (别名2.0版新增)弧度化角度 sh (hsin)双曲正弦 ch (hcos)双曲余弦 th (htan)双曲正切 arsh (harcsin)反双曲正弦 arch (harccos)反双曲余弦 arth (harctan)反双曲正切 arcsin 反正弦 arccos 反余弦 arctan 反正切 arccot 反余切 sin 正弦 cos 余弦 tan (tg)正切 cot 余切 abs 求绝对值 exp E的乘幂 sgn 符号函数 sqr (sqrt)平方根 int 返回参数的整数部分(向负无穷大取整) fix 返回参数的整数部分(向0取整) lg 常用对数(10为底) ln (log)自然对数(E为底) (注:以N为底的对数为logn(x)=ln(x)/ln(n)) arcsec 反正割 arccsc 反余割 sec 正割 csc 余割 rnd 随机数 (注:以上函数的参数均为一个,故没有写出) 以下为2.0版以上新增的函数(注:[]中的表达式为可选项,在实际输入参数时,没有“[]”) perm(表达式1[,表达式2]) (permutation)从表达式1个不同的元素中,取出表达式2个不同的元素的排列数。若省略表达式2,则返回全排列数。 comb(表达式1[,表达式2]) (combination)从表达式1个不同的元素中,取出表达式2个不同的元素的组合数。若省略表达式2,则返回1。 fac(表达式) (factorial)求阶乘 short(表达式1[,表达式2]) 以表达式2的值来决定表达式1的小数点后显示的位数。若表达式2省略,则取表达式2=5。 mean(表达式1[,表达式2[,表达式3.....]]) (average)求表达式列表中所有表达式的平均值 cov(表达式1[,表达式2[,表达式3.....]]) 求表达式列表中所有表达式的方差 std(表达式1[,表达式2[,表达式3.....]]) 求表达式列表中所有表达式的标准差 prod(表达式1[,表达式2[,表达式3.....]]) (product)求表达式列表中所有表达式的积 max(表达式1[,表达式2[,表达式3.....]]) 求表达式列表中所有表达式的最大值 min(表达式1[,表达式2[,表达式3.....]]) 求表达式列表中所有表达式的最小值 sum(表达式1[,表达式2[,表达式3.....]]) 求表达式列表中所有表达式的和 iif(表达式1,表达式2,表达式3) 当表达式1为非0时,返回表达式2的值,否则返回表达式3的值。(3.1版) (注:以上表达式的取值均按其函数的数学意义的取值范围为准) 4.命令标识符: ' (单引号) 对表达式进行行注释,不参与运算操作(3.0版新增) 5.运算的优先级别: 由低到高排列如下:(级别高的先运算,同级间按从左到右的顺序运算) 逗号运算符 = (赋值运算符)(3.0版) &,|,~,! ==,>,<,>=,<=,<> +,-(双目运算) *,/,\,% ^ (注:在进行连续的乘方运算时,按从左到的的顺序进行发,如:2^-3^-4=(2^-3)^-4) +,-(单目运算) 函数 () B.系统常量 (注:1.0版中在表达式中输入常量时要用大写字母;2.0版中常量可以不大写) 控件目前支持的常量如下: PI  (取3.14159265358979) E  (取2.71828182845905) TRUE (取-1) FALSE (取0) Inf (取1.79769313486231E+308 表示正无穷大,这个常数在表达式中不可用,系统保留,只可用于拟精确运算的结果显示)(2.0版) Eps 计算机“0”点(系统保留,不可作赋值运算) (注:系统将计算机的逻辑0取为Eps=9.88131291682493E-14,其实最小可取为Eps=9.88131291682493E-324,只是没有必要而已。所以在计算如: sin(100000*PI)时,结果(-3.249***554110389E-10)可能不是0而是一个非常非常小的数,对这种情况,可按需要作近似“0”处理(即看作0)。产生这种情况的原因是系统中的PI并非是精确值,所以在做数值计算时这种情况无法避免的) C.加强或新增的功能 1.拟精确运算(2.0版新增) 在处理一些周期性的函数(如三角函数)时,系统会尽可能的让所得的结果以“精确的”形式来表示,比如: sin(100000*PI)在1.0中为-3.249***554110389E-10,现在却是0;tan(pi/2)在1.0中是618***7100438218,2.0版中为Inf(数值结果即1.75E+308),可以说是比以前精准了许多。这样做只是为了使计算结果更符合人们的习惯而已。 2.科学记数法模式与全半角混合输入(2.1版新增) a).在2.1以前的版本中,XoYoMathXP并不支持被求值字符串中含有如“1e-5”等形式的字符串,原因是控件会将其中的“e”看作是常量E而进行宏代换,所以会计算时会出现错误信息。2.1版对这种情况进行了相应的处理,现在控件已经可以支持科学记数法形式的字符串的求值了。科学记数法的表达式方法如下: 数字E整数 它的值为:数学*(10^整数) 其中,E的前面必须要有数字,而后面必须是一个整数,(可有“±”号,但不可以有括号),对E的大小写没有要求。(注:E的前后不可有多余的空格,否则计算结果可能不正确。) b).2.1版中开始支持求值字符串是全半角的混合字符串的情况。如:表达式 2*3+5-sin(pi)+7/8-cOs(e) 结果为:12.786733914787 3.表达式中可以含有变量与注释语句和赋值运算符(3.0版新增) a).在3.0版中,用户可以在被求值的表达式中使用变量进行运算。变量无须提前定义,可以直接使用。目前变量只支持数值型数据,变量的初始值为0。变量名标识符的命名与一般的程序设计语言的规则一样,即只可包含有字母、数字和下划线,且只能以字母和下划线开头,中间不可有空格。只要表达式中出现了一个新的变量,不管用户是否对其进行了操作,系统都会将这个新变量添加到控件的“变量列表”中去。用户可以通过控件所提供的相应的命令与属性来对单个变量及变量列表进行访问。 b).在3.0版中,可以使用注释语句来对表达式进行行注释,控件会将注释命令符单引号(“'”),后面的内容全部看作是注释来处理,不对那部分内容进行运算操作。 c).3.0版的表达式可以包含赋值运算符“=”(3.0版中的等于用“==”来表示),其用法与C语言类似,一个表达式可以多个赋值运算符,使用起来十分灵活。 D.范例参考 1.简单示例: sin(PI/2) '结果为:1 5+(-1*(-(-(-2/3))-6+8^2)%3)\7*100*cos(3) '结果为:5 1>=-2 AND FALSE '结果为:0 radtoang(arccos(cos(PI))) '结果为:180 ln(E) '结果为:1 tan(pi/2) '结果为:Inf sum(1,2,3,5,9) '结果为:20 prod(1,2,3,5,9) '结果为:270 mean(1,2,3,5,9) '结果为:4 cov(1,2,3,5,9) '结果为:40 std(1,2,3,5,9) '结果为:6.32455532033676 fac(10) '结果为:3628800 perm(5,3) '结果为:60 comb(5,3) '结果为:10 max(1,2,3,5.9,7,1,0,sin(pi)-1) '结果为:7 min(1,2,3,5.9,7,1,0,sin(pi)-1) '结果为:-1 short(pi,8) '结果为:3.14159265 tan(5099*pi/2) '结果为:-Inf cot(10002*pi) '结果为:Inf 1,2,3,5,8,9,1,0,sin(1),cos(2)*pi-1+prod(1,3,sum(8,9,-1)) '结果为:45.6926361554889 sum(1,2,3,5,8,9,1,0,sin(1),cos(2)*pi-1+prod(1,3,sum(8,9,-1))) '结果为:75.5341071402968 prod(2.3e-3,9,sin(0.4e-1)) '结果为:8.27779217663328E-04 sum(2.3e-3,9,sin(0.4e-1),100e-10) '结果为:9.042289344186*** prod(2.3e-3,9,sin(0.4e-1),100e-10) '结果为:8.27779217663328E-12 2*3+5-sin(pi)+7/8-cOs(e)*prod(2.3e-3,9,sin(0.4e-1),100e-10) '结果为:11.8750000000075 iif(5>3,1,10) '结果为:10 2^-3^-4^5 '结果为:1.15292150460685E+18 ---+---+++-+++3+(---(+------23)) '结果为:-26 ... ... 2.含有变量、注释的例子: 将下面的文本Copy到范例程序的表达式编辑文本框中,然后进行计算即可看到结果。 'XoYoMathXP Example a=5 '为变量赋值 cis=6 d=a-cis*6*h sin(pi/2+1) '函数名不正确的的例子 tn=tan(pi/2) '拟精确运算处理 (f==1),3,5 et=5-100000e160 y1=1,y2=3,y3=5,y4=8,y5=12-6+sin(pi/2)*sh(1) '用逗号表达式与赋值运算相结合对变量进行赋值处理 15+(-1*(-(-(-2/3))-6+8^2)%3)\7*100*cos(3) a-cis x=7 x=3,5,x==7 x1=6 x_a1=7 1x=9.5 '变量名不可以数学开头 x 1 x=1.111*x 1 x '变量名中不可有空格 cos(x1* x) t=-1 tz=iif(t>0,t,-t) 'iif函数的小应用 'Example End E.控件操作 控件的属性与方法 (1)属性: 1)ErrorCaptured,(只读属性)是否发生错误,发生错误返回True,否则返回False 2)ErrorNumber,(只读属性)错误信息的代号,系统定义的错误信息及其代号如下: 0: "表达式语法错误! " 1: "括号不配对! " 2: "表达式不可为空或全为空格(没有输入表达式)! " 3: "表达式中出现了无法识别的标识符!" 4: "发现未定义过的函数或变量的标识符错误!" 5: "函数自变量参数(或运算符的操作数)无效或错误!" 6: "溢出! 数值已超出范围!" 7: "不可对系统定义的常量赋值!" 8: "标识符命名错误!" 9: "未知错误!!" 3)ErrorShowEnabled,是否在出错时显示错误信息对话框,True为显示,Flase 为不显示 4)ErrorWindowCaption,错误信息对话框的的标题文字 5)NumericalResult,(只读属性)计算结果的数值形式(Double类型) 6)VarsList,(只读属性)返回变量列表的内容(String型),格式为“变量名 = 变量值”(3.0版) (2)方法: 1)GetExpressionValue(字符串表达式),对()中的字符串表达式进行求值运算,返回一个字符串型的结果。(注:若返回的结果为"Error"则其数值结果规定为0;若此表达式全部为注释内容,则返回“XoYoMathXP Note Line”,规定其数值结果为0(3.0版)) 2)ShowAbout,显示控件的关于对话框 3)ClearVarList,用于清空控件的变量列表(3.0版) 4)GetVariableValue(变量名),返回变量名所指定变量的值(String型),如果此变量不存在于变量列表中,则返回空字符串(3.0版) =================================================================== 版权所有(C)XOYOSOFT 2002-2003,李逍遥 Http://xoyosoft.wx-e.com/chs =================================================================== 如果发现了控件的Bug或是您对此控件有什么改进的建议,还请告诉我:) OK!Have fun!^_^ 逍遥 于逍遥居

近期下载者

相关文件


收藏者