⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compiledllapi.bas

📁 酒店管理VB源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
  Const csTCmCx_HexMod2_EQ_1_Error = 104     ' 编译时传入指令长度错误!
  Const csTCmCx_PMMarker_Error = 105         ' 编译得到参数名称时发生错误!
  Const csTCmCx_FMMarker_Error = 106         ' 编译得到函数名称时发生错误!
  Const csTCmCx_Wording_Error = 107          ' 语法发生错误!
  Const csTCmCx_Bracket_Error = 108          ' 语法错误,在 ( ) 处!
  Const csTCmCx_Optimize_Error = 109         ' 编译优化时发生错误!
  Const csTCmCx_Define_Error = 110           ' 函数编译错误(或超出定义域)!
  Const csTCmCx_Handwriting_Error = 111      ' 函数书写格式错误!

  Const csTCmCx_ReadFloat_Error = 113        ' 编译读取常数数字时发生错误!
  Const csTCmCx_ReadMarker_Error = 114       ' 编译读取标识符时发生错误!
  Const csTCmCx_Read_Error = 115             ' 语法错误,有不识别的字符!
  Const csTCmCx_Note_Match_Error = 116       ' 注释符号不匹配!  { } 或 /*  */
  Const csTCmCx_FPList_Error = 117           ' 参数列表错误!
  Const csTCmCx_IFHandwriting_Error = 118    ' If函数书写格式错误!

  '创建编译类,成功返回编译类句柄,失败返回0, 不用时调用cmcx_CloseTCmHandle关闭句柄
  '其它函数需要传递该值作为第一个参数
  Public Declare Function cmcx_CreateTCompileComplex Lib "CompileDll.dll" () As Long

  '关闭编译类句柄,释放空间
  Public Declare Function cmcx_CloseTCmcxHandle Lib "CompileDll.dll" (ByVal hcmcx As Long) As Boolean

  ' 调用函数返回表达式的值(实参数值列表), '等价于 cmcx_SetFunctionParameter + cmcx_GetValue
  Public Declare Sub VB_cmcx_GetFunctionValue Lib "CompileDll.dll" (ByVal hcmcx As Long, ByRef PList As Double, ByRef pComplexReal As Double, ByRef pComplexImag As Double)   ' (编译后才能调用)

  ' 调用函数返回表达式的值,
  Public Declare Sub VB_cmcx_GetValue Lib "CompileDll.dll" (ByVal hcmcx As Long, ByRef pComplexReal As Double, ByRef pComplexImag As Double)  '(编译后才能调用)

  ' 按当前设置的参数表传入参数值(实参数值列表)
  Public Declare Sub VB_cmcx_SetFunctionParameter Lib "CompileDll.dll" (ByVal hcmcx As Long, ByRef PList As Double)    ' (编译前后都能调用)

  ' 设置需要编译的字符串(要编译的字符串,虚参数列表字符串,是否自动编译),
  '    比如 as Value as ='Sqr(x)+Sqr(y)', ParameterList as ='x,y' ,
  Public Declare Function cmcx_SetText Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal TextValue As String, _
                       ByVal ParameterList As String, ByVal IfCompile As Boolean) As Boolean '(编译前调用,这是最先要做的)
  ' 编译当前字符串
  Public Declare Function cmcx_Compile Lib "CompileDll.dll" (ByVal hcmcx As Long) As Boolean

  ' 测试是否使用了未定义的变量
  Public Declare Function cmcx_IfHaveUnDefineParameter Lib "CompileDll.dll" (ByVal hcmcx As Long) As Boolean   '(编译后才能调用)

  '设置一个外部变量(外部变量名称,外部变量地址), 这样就可以和高级语言或另一个编译类共享变量了
  'Public Declare Function cmcx_SetExteriorParameter Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PName As string, ByVal PAddress As long) As Boolean
  '(编译前调用,如果是在编译后,需要调用cmcx_RefreshExeAddressCodeInPointer刷新地址)
      
    'VB不支持10字节浮点数,所以编译类不能和VB环境共享变量,这里只能和另一个编译类共享变量
    Public Declare Function cmcx_SetExteriorParameter Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PName As String, ByVal PAddress As Long) As Boolean
    '(编译前调用,如果是在编译后,需要调用cmcx_RefreshExeAddressCodeInPointer刷新地址)

  ' 设置外部数组(数组名称,数组地址),
  'Public Declare Function cmcx_SetExteriorArrayParameter Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal ArrayPName As string, ByVal ArrayPAddress As long) As Boolean
  '(编译前调用,如果是在编译后,需要调用cmcx_RefreshExeAddressCodeInPointer刷新地址)

  '刷新变更地址  '(设置完所有的外部变量以后需要调用一次该函数)
  Public Declare Sub cmcx_RefreshExeAddressCodeInPointer Lib "CompileDll.dll" (ByVal hcmcx As Long)

  ' 处理预定义宏(要代换的标识符,代换为的描述字符串), ' 可以用来处理常数,甚至定义新的函数!
  '   如 Key as ='a', Value as ='-0.5' , 或 Key as ='f(x,y)',Value as ='Max(x,Sin(y))' 等,
  Public Declare Function cmcx_Define Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal Key As String, Value As String) As Boolean   '(编译前调用)

  ' 处理常数定义(要代换的标识符,代换的值)  ' 常数定义, Value必须是一个可计算的值
  '   如 Key as ='a', Value as ='2' , 或 Key as ='b' , Value as ='2*sin(PI/2)' 等,
  '   该功能完全可以用预定义宏(Define)来代替,
  '   但当值为常数时这样处理有可能使最后得到的编译函数速度更快,并加快编译速度
  Public Declare Function cmcx_DefineConst Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal Key, Value As String) As Boolean  '(编译前调用)

  '根据参数名称PName得到参数地址值
  Public Declare Function cmcx_GetParameterAddress Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PName As String) As Long

  '按参数名称PName设置参数值dValue
  Public Declare Function VB_cmcx_SetParameterN Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PName As String, ByVal ComplexReal As Double, ByVal ComplexImag As Double) As Boolean

  '按参数地址PAddress设置参数值dValue
  Public Declare Sub VB_cmcx_SetParameterA Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PAddress As Long, ByVal ComplexReal As Double, ByVal ComplexImag As Double)

  '得到参数PName的值
  Public Declare Sub VB_cmcx_GetParameterValueN Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PName As String, ByRef pComplexReal As Double, ByRef pComplexImag As Double)
  '按地址得到参数的值
  Public Declare Sub VB_cmcx_GetParameterValueA Lib "CompileDll.dll" (ByVal PAddress As Long, ByRef pComplexReal As Double, ByRef pComplexImag As Double)

  '得到参数的总数目(不包括常数)
  Public Declare Function cmcx_GetUserParameterCount Lib "CompileDll.dll" (ByVal hcmcx As Long) As Long

  '通过PList返回参数列表(不包括常数)
  'Public Declare Sub cmcx_GetUserParameterList Lib "CompileDll.dll" (ByVal hcmcx As Long, ByRef PList As cmcx_TUserParameterList)

  '测试参数PName是否已经存在
  Public Declare Function cmcx_IfHaveParameter Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal PName As String) As Boolean

  '设置随机函数Rnd()的初始种子值为完全随机种子(系统用当前精确到毫秒的时间设置)
  Public Declare Sub cmcx_SetRandomizeT Lib "CompileDll.dll" (ByVal hcmcx As Long)
  '设置随机函数Random()的初始种子值
  Public Declare Sub cmcx_SetRandomizeI Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal RandomSeed As Integer)

  Public Declare Sub cmcx_SetEnabledNote Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal Value As Boolean)          '是否允许使用注释   (默认false)
  Public Declare Sub cmcx_SetEnabledOptimizeDiv Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal Value As Boolean)  '是否要优化常数浮点除法运算  (默认true)
  Public Declare Sub cmcx_SetEnabledOptimizeStack Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal Value As Boolean) '是否要优化堆栈  (默认true)
  Public Declare Sub cmcx_SetEnabledOptimizeConst Lib "CompileDll.dll" (ByVal hcmcx As Long, ByVal Value As Boolean) '是否要优化常数运算 (默认true)
  Public Declare Function cmcx_GetVersion Lib "CompileDll.dll" () As Double    ' 获得版本号

  Public Declare Function cmcx_GetErrorCode Lib "CompileDll.dll" (ByVal hcmcx As Long) As Integer    '返回错误代码号
  Public Declare Function cmcx_GetExeCodeLength Lib "CompileDll.dll" (ByVal hcmcx As Long) As Integer   '返回编译以后的程序指令区代码长度(字节)
  Public Declare Function cmcx_GetExeParameterLength Lib "CompileDll.dll" (ByVal hcmcx As Long) As Integer    '返回编译以后的程序数据区代码长度(字节)



'////////////////////////////////////
' 几个工具函数,可以单独调用

  '获取当前CPU周期计数(CPU周期数)
  Public Declare Function VB_GetCPUCount Lib "CompileDll.dll" () As Double
  
  '把复数转化为字符串表示
  Public Declare Sub VB_cmcx_ComplexToStr Lib "CompileDll.dll" (ByVal ComplexReal As Double, ByVal ComplexImag As Double, ByVal strBuffer As String, ByVal nBufLen As Long)
  
  '把字符串转化为复数
  Public Declare Function VB_cmcx_StrToComplex Lib "CompileDll.dll" (ByVal strValue As String, ByRef pComplexReal As Double, ByRef pComplexImag As Double) As Boolean
  
  '同时计算出Sin(x)和Cos(x),而时间相当于调用一次Sin(或Cos)函数的时间
  '为了复数函数库的独立性,库中的SinCos函数实现没有调用这个API函数
  Public Declare Sub VB_SinCos Lib "CompileDll.dll" (ByVal x As Double, ByRef xSin As Double, ByRef xCos As Double)
  
  '函数VB_Ceil:向正无穷大取整
    '注VB中: Int:向负无穷大取整,Fix:截断(向0)取整,Round:四舍五入
  Public Declare Function VB_Ceil Lib "CompileDll.dll" (ByVal x As Double) As Double
  
  
  
  
    


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -