📄 ccompile.cls
字号:
End Sub
Public Sub SetEnabledOptimizeConst(ByVal Value As Boolean) '是否要优化常数运算 (默认true)
Call cm_SetEnabledOptimizeConst(cmHandle, Value)
End Sub
Public Function GetVersion() As Double ' 获得版本号
Call cm_GetVersion
End Function
Public Function GetErrorCode() As Integer '返回错误代码号
GetErrorCode = cm_GetErrorCode(cmHandle)
End Function
Public Function GetExeCodeLength() As Integer '返回编译以后的程序指令区代码长度(字节)
GetExeCodeLength = cm_GetExeCodeLength(cmHandle)
End Function
Public Function GetExeParameterLength() As Integer '返回编译以后的程序数据区代码长度(字节)
GetExeParameterLength = cm_GetExeParameterLength(cmHandle)
End Function
Public Function GetCPUCount() As Double '获取当前CPU周期计数(CPU周期数)
GetCPUCount = VB_GetCPUCount()
End Function
' <<< 简要说明和帮助 >>>>
' --------------------------------------------------------------------------
'
' 0.支持数学函数表达式的编译执行;
'
' 1.支持带参数编译,参数默认值为0;运行前请赋值;
'
' 2.常数可以用科学计数法表示,如: -1.4E-4=-0.00014;
' 系统定义的常量: 圆周率 PI=3.1415926535897932384626433832795...
' 逻辑真 true=1
' 逻辑假 false=0
' 当标识符为e时,系统默认值为 自然数
' 即 e=2.7182818284590452353602874713527...
' 但它和PI,true,false不同,e可以重新赋值, pi,true,false是系统常量,e是用户变量
'
'
'
' 3.使用多重括号并不会降低速度,特别是在不容易分清楚计算优先级的时候,请多使用括号;
'
' 4.表达式中函数名和参数名等不区分大小写;关键字中不允许插入空格等字符;
'
' 5.编译的文本长度几乎不受限制(只是受内存和编译时间等系统影响)
'
' 6.利用错误号功能可以将错误描述翻译为其他语言;
'
' 7.允许在表达式中使用注释,注释写法为:
' 单行注释: 双斜杠// 开始到一行结束(即遇到回车换行符)
' 长段注释: '{'、'}' 或'/*'、'*/' 之间的部分
'
' 8.系统使用的标识符除去下面列出的函数名(包括别名)外还有 :
' 'PI'、'true'、'false'、'TCmSYS_IF_?'、'TCmSYS_Boolean??'、'TCmSYS_Const_*' 、
' 'TCmSYS_Const_ff_x_*'、'TCmSYS_DefineFPName_???'和 'TCmSYS_FF_*' 等,
' 自定义的标识符名称请不要再次使用它们; (即前缀不能为'TCmSYS_')
'
' 9.表达式中支持的函数:
'
' 这里的实数域为: R' , R'约为 (-1.1E+4932,-3.6E-4951) and [ 0 ] and (+3.6E-4951,+1.1E+4932)
' 当实数属于(+-3.6E-4951,0) 时认为实数等于0
' 没有特别说明的变量取值范围为实数域 R'
'
' (函数计算的结果和中间结果也不能超出实数域 R')
'
' 算符(函数)名称 书写格式和变量取值范围 例子(说明)
'
' + 加法 x+y 或者: Add(x,y) 3.5+5=8.5
' - 减法 x-y 或者: Sub(x,y) 8-3=5
' * 乘法 x*y 或者: Mul(x,y) 2*3=6
' / 除法 x/y 或者: Div(x,y) ; y<>0 3/2=1.5
' \ 整除 x\y 或者: DivE(x,y) ; y<>0 25\10=2
' Mod 求余 x Mod y 或者: x%y、Mod(x,y) ; y<>0 14 Mod 5=4
' ^ 指数 x^y 或者: Power(x,y)、x**y 2^3=8
' ; x<0时,y必须为整数
' ; x=0时,y>0
' IntPower 整数次方 IntPower(x,N); N<2^31 IntPower(5,3)=125
'
' ;比较运算产生的结果为逻辑值(真或假),即结果只可能为1或0
' = 等于 x=y (2=3-1) =true =1
' <> 不等于 x<>y (2<>3-1) =false =0
' < 小于 x<y (2<3) =true
' > 大于 x>y (2>3) =false
' <= 小于等于 x<=y (sin(a)<=1) =true
' >= 大于等于 x>=y (3>=PI) =false
'
' ;逻辑运算中 0表示 假(false),非0会被当作 真(true)来参加逻辑运算
' ;用大写X,Y表示逻辑值或实数(注意必须写扩号)
' ADD 逻辑与 (X) ADD (Y) (1>2) AND (true)=false
' OR 逻辑或 (X) OR (Y) (false) OR (true)=true
' XOR 逻辑异或 (X) XOR (Y) (true) XOR (true)=false
' NOT 逻辑非 NOT (X) NOT (1)=false
'
' Max 最大值 Max(x,y) Max(3,4)=4
' Min 最小值 Min(x,y) Min(3,4)=3
' Sqr 平方 Sqr(x) Sqr(3)=9 //注意平方和开方的函数名称
' Sqr3 立方 Sqr3(x) Sqr3(3)=27
' Sqr4 四次方 Sqr4(x) Sqr4(3)=81
' Sqrt 开方 Sqrt(x) ; x>=0 Sqrt(3)=1.73205080756888
'
' Exp 自然指数 Exp(x) Exp(2)=e*e=e^2
' Ln 自然对数 Ln(x) ; x>0 Ln(e)=1
' Log2 2的对数 Log2(x) ; x>0 Log2(8)=3
' Log10 10的对数 Log10(x) 或者: Log(x) ; x>0 Log(100)=2
'
' Abs 绝对值 Abs(x) Abs(-2)=2 ; Abs(2)=2
' SqrAdd 平方和 SqrAdd(x,y) sqrAdd(3,4)=25
' Rev 倒数 Rev(x) Rev(5)=1/5=0.2
' Int 取整 Int(x) 或者: Floor(x) (不超过x的最大整数) Int(2.3)=2 ; Int(-2.3)=-3
' Trunc 截断取整 Trunc(x) (向零取整) Trunc(2.3)=2 ; Trunc(-2.3)=-2
' Round 四舍五入 Round(x) (四舍五入取整) Round(2.51)=3 ; Round(2.49)=2
' Ceil 舍入取整 Ceil(x) (向正穷大取整) Ceil(-2.2)=-2 ; Ceil(2.8)=3
' Sgn 符号函数 Sgn(x) Sgn(-2)=-1 ; Sgn(0)=0 ; Sgn(2)=1
' Hypot 斜边 Hypot(x,y) Hypot(x,y)=Sqrt(x*x+y*y)
' Random 随机函数 Random(x) 或者:RND(x)、Rand(x) Random(2.5)=2.5*a ,其中a为随机数0<=a<1
' (要产生真正的随机数,而不是固定随机数序列,请在创建或编译完成后
' 取得表达式值之前调用一次CCopmile.SetRandomize();函数。)
'
' Sin 正弦 Sin(x) Sin(pi/6)=0.5
' Cos 余弦 Cos(x) Cos(0)=1
' Tan 正切 Tan(x) 或者: tg(x) Tan(pi/4)=1
' ArcSin 反正弦 ArcSin(x) ; -1<=x<=1 ArcSin(1)=1.5707963267949=pi/2
' ArcCos 反余弦 ArcCos(x) ; -1<=x<=1 ArcCos(0)=1
' ArcTan 反正切 ArcTan(x) 或者: Arctg(x) ArcTan(1)=0.785398163397448=pi/4
' ArcTan2 反正切2 ArcTan2(y,x) 或者: Arctg2(y,x) ArcTan2(2,1)=1.10714871779409
' ;y为纵坐标、x为横坐标
' Cot 余切 Cot(x) 或者: Ctg(x) ;x<>0 Cot(x)=1/Tan(x)
' Sec 正割 Sec(x) Sec(x)=1/Cos(x)
' Csc 余割 Csc(x) ;x<>0 Csc(x)=1/Sin(x)
' ArcCot 反余切函数 ArcCot(x) 或者: ArcCtg(x) ;x<>0 ArcCtg(x)=ArcTan(1/X) //Delphi6 误为 ArcCtg(x)=Tan(1/X) !
' ArcSec 反正割函数 ArcSec(x) ;|x|>=1 ArcSec(x)=ArcCos(1/X) //Delphi6 误为 ArcSec(x)=Cos(1/X) !
' ArcCsc 反余割函数 ArcCsc(x) ;|x|>=1 ArcCsc(x)=ArcSin(1/X) //Delphi6 误为 ArcCsc(x)=Sin(1/X) !
'
' SinH 双曲正弦 SinH(x) SinH(2)=3.62686040784702=(e^2-e^(-2))/2
' CosH 双曲余弦 CosH(x) CosH(2)=3.76219569108363=(e^2+e^(-2))/2
' TanH 双曲正切 TanH(x) 或者: tgH(x) TanH(2)=0.964027580075817=SinH(2)/CosH(2)
' ArcSinH 反双曲正弦 ArcSinH(x) ArcSinH(3.62686040784702)=2
' ArcCosH 反双曲余弦 ArcCosH(x) ; x>=1 ArcCosH(3.76219569108363)=2
' ArcTanH 反双曲正切 ArcTanH(x) 或者: ArctgH(x) ArcTanH(0.761594155955765)=1
' CotH 双曲余切 CotH(x) 或者: CtgH(x) ;x<>0 CotH(x)=1/TanH(x)
' SecH 双曲正割 SecH(x) SecH(x)=1/CosH(x)
' CscH 双曲余割 CscH(x) ;x<>0 CscH(x)=1/SinH(x)
' ArcCotH 反双曲余切函数 ArcCotH(x) 或者: ArcCtgH(x) ;x<>0 ArcCtgH(x)=ArcTanH(1/X)
' ArcSecH 反双曲正割函数 ArcSecH(x) ;0<x<=1 ArcSecH(x)=ArcCosH(1/X)
' ArcCscH 反双曲余割函数 ArcCscH(x) ;x<>0 ArcCscH(x)=ArcSinH(1/X)
'
' If 条件函数 If(s,r1,r2) If(True,2,3)=2; If(0,2,3)=3;
' (等价于高级语言的: If (s) Then Result:=r1 Else Result:=r2;)
'
' ff 定积分函数 ff(a,b,x,g(x)) 或者: ff(a,b,x,N,g(x)) ff(-1,1,y,Sqrt(1-y*y))=pi/2
'
' ( ff函数特别说明:
' 函数g(x)是关于'x'的表达式(也可以不含有变量x),这里的自变量x与本函数ff以外的x没有关系;
'
' ff函数表示 对函数 g(x) 从 a 积到 b 积分,
' x表示以x为积分变量对函数g(x)积分, (或其他自变量名称标识符)
' N (N>0) 表示 把积分区间分成 N 份来积 ,省略 N 时默认为 1000 ;
'
' 积分函数支持多重积分(较慢)
' (注意: 多重积分和积分套嵌不是一个意思)
'
' 比如求单位球体的体积(半径R=1)
' 二重积分表达式为:
' ff(-1,1,x, //x从-1到1积分
' ff(-Sqrt(1-x*x),Sqrt(1-x*x),y, //y从-Sqrt(1-x*x)到sqrt(1-x*x)积分
' 2*Sqrt(1-x*x-y*y)
' )
' )
'
' =4.18883330446894
' =4*Pi/3
' =ff(-1,1,x,PI*(1-x*x)) // (求单位球体体积的一重积分表达式)
' )
'
' 10. 运算符优先级表:
' 由高到低
' () (包括各种函数)
' ^
' * \ / mod
' + -
' = <> < > <= >=
' AND、OR、XOR (NOT 可以看作函数)
'
' 11. 更强大的功能请参看类的接口函数
'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -