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

📄 compiledllapi.bas

📁 酒店管理VB源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "mdCmDllAPI"
Option Explicit

' 数学函数动态编译器CCompile类 的 API引入声明
' 复数函数动态编译器CCompileComplex类 的 API引入声明

' 具体使用时,建议使用封装好的CCompile类和CCompileComplex类
' (当然,你也可以调用这些API来达到最快的速度)
'      作者: 侯思松  2003.3.28-29  HouSisong@263.net


'=====================================================================================
'CCompile类API VB 声明

  '错误号定义
  Public Const csTCompile_NoError = 0               '    '没有发现错误!
  Public Const csTCompile_NoKnownError = 1          '    '不知道的错误!
  Public Const csTCompile_NoErrorCode = 2           '    '找不到错误号所对应的错误描述!
  Public Const csTCompile_CompileHexCodeError = 3   '    '编译时指令的十六进制代码错误!
  Public Const csTCompile_HexMod2_EQ_1_Error = 4    '    '编译时传入指令长度错误!
  Public Const csTCompile_PMMarker_Error = 5        '    '编译得到参数名称时发生错误!
  Public Const csTCompile_FMMarker_Error = 6        '    '编译得到函数名称时发生错误!
  Public Const csTCompile_Wording_Error = 7         '    '语法发生错误!
  Public Const csTCompile_Bracket_Error = 8         '    '语法错误,在 ( ) 处!
  Public Const csTCompile_Optimize_Error = 9        '    '编译优化时发生错误!
  Public Const csTCompile_Define_Error = 10         '    '函数编译错误(或超出定义域)!
  Public Const csTCompile_Handwriting_Error = 11    '    '函数书写格式错误!
  Public Const csTCompile_FFHandwriting_Error = 12  '    '积分函数书写格式错误!
  Public Const csTCompile_ReadFloat_Error = 13      '    '编译读取常数数字时发生错误!
  Public Const csTCompile_ReadMarker_Error = 14     '    '编译读取标识符时发生错误!
  Public Const csTCompile_Read_Error = 15           '    '语法错误,有不识别的字符!
  Public Const csTCompile_Note_Match_Error = 16     '    '注释符号不匹配!  { } 或 /*  */
  Public Const csTCompile_FPList_Error = 17         '    '参数列表错误!
  Public Const csTCompile_IFHandwriting_Error = 18  '    'If函数书写格式错误!



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

  ' 调用函数返回表达式的值(实参数值列表), '等价于 cm_SetFunctionParameter + cm_GetValue
  Public Declare Function VB_cm_GetFunctionValue Lib "CompileDll.dll" (ByVal hcm As Long, ByRef PList As Double) As Double ' (编译后才能调用)

  ' 调用函数返回表达式的值,
  Public Declare Function VB_cm_GetValue Lib "CompileDll.dll" (ByVal hcm As Long) As Double '(编译后才能调用)

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

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

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

  '设置一个外部变量(外部变量名称,外部变量地址), 这样就可以和高级语言或另一个编译类共享变量了
  'Public Declare Function cm_SetExteriorParameter Lib "CompileDll.dll" (ByVal hcm As Long, ByVal PName As String, ByVal PAddress As long) As Boolean
  '(编译前调用,如果是在编译后,需要调用cm_RefreshExeAddressCodeInPointer刷新地址)

      'VB不支持10字节浮点数,所以编译类不能和VB环境共享变量,这里只能和另一个编译类共享变量
      Public Declare Function cm_SetExteriorParameter Lib "CompileDll.dll" (ByVal hcm As Long, ByVal PName As String, ByVal PAddress As Long) As Boolean
      '(编译前调用,如果是在编译后,需要调用cm_RefreshExeAddressCodeInPointer刷新地址)

  ' 设置外部数组(数组名称,数组地址),    ////'VB不支持10字节浮点数,所以该功能提供不了
  'Public Declare Function cm_SetExteriorArrayParameter Lib "CompileDll.dll" (ByVal hcm As Long, ByVal ArrayPName As string, ByVal ArrayPAddress As long) As Boolean
  '(编译前调用,如果是在编译后,需要调用cm_RefreshExeAddressCodeInPointer刷新地址)

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

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

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

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

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

  '得到参数PName的值
  Public Declare Function VB_cm_GetParameterValueN Lib "CompileDll.dll" (ByVal hcm As Long, ByVal PName As String) As Double
  '按地址得到参数的值
  Public Declare Function VB_cm_GetParameterValueA Lib "CompileDll.dll" (ByVal PAddress As Long) As Double

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

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

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

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

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

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

'=====================================================================================
''CCompileComplex类API VB 声明


  '错误号定义
  Const csTCmCx_NoError = 0                  ' 没有发现错误!
  Const csTCmCx_NoKnownError = 101           ' 不知道的错误!
  Const csTCmCx_NoErrorCode = 102            ' 找不到错误号所对应的错误描述!
  Const csTCmCx_CompileHexCodeError = 103    ' 编译时指令的十六进制代码错误!

⌨️ 快捷键说明

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