📄 form1.frm
字号:
TabIndex = 2
Text = "Form1.frx":000A
Top = 1440
Width = 3615
End
Begin VB.TextBox TextcmCount
Height = 375
Left = 1320
TabIndex = 1
Text = "100000"
Top = 3240
Width = 2475
End
Begin VB.Label Label8
Caption = " CPU周期计数:"
Height = 255
Left = 60
TabIndex = 17
Top = 4320
Width = 1275
End
Begin VB.Label Label7
Caption = " 函数值:"
Height = 255
Left = 420
TabIndex = 15
Top = 3840
Width = 915
End
Begin VB.Label Label6
Caption = "计算次数:"
Height = 255
Left = 420
TabIndex = 13
Top = 3360
Width = 915
End
Begin VB.Label Label5
Caption = "计算的表达式:"
Height = 255
Left = 180
TabIndex = 12
Top = 1200
Width = 1395
End
Begin VB.Label Label4
Caption = "d:"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 2040
TabIndex = 11
Top = 780
Width = 315
End
Begin VB.Label Label3
Caption = "c:"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 180
TabIndex = 9
Top = 780
Width = 315
End
Begin VB.Label Label2
Caption = "b:"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 2040
TabIndex = 7
Top = 360
Width = 315
End
Begin VB.Label Label1
Caption = "a:"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 180
TabIndex = 5
Top = 360
Width = 315
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'例子GetFunctionValue的使用,即直接传递参数值来调用
Private Sub CommandXXX_Click()
Dim cm As CCompile ' 声明新的表达式编译类CCompile
Set cm = New CCompile
Dim x As Double
Dim a() As Double
Dim i As Long, Count As Long
Dim t0 As Double
ReDim a(0 To 3) As Double
a(0) = Me.TextcmA.Text ' 获取参数值
a(1) = Me.TextcmB.Text
a(2) = Me.TextcmC.Text
a(3) = Me.TextcmD.Text
If cm.SetText(Me.TextcmText.Text, "a,b,c,d", True) Then ' 设置编译的表达式和参数,并自动编译
Count = Me.TextcmCount.Text
t0 = cm.GetCPUCount() ' 获得当前CPU的周期计数
For i = 0 To Count - 1
x = cm.GetFunctionValue(a) ' 返回表达式的值 给变量 x (直接传递参数值来调用)
Next i
t0 = cm.GetCPUCount - t0 ' 得到运行时用去的CPU周期计数
Me.TextcmCPUCount.Text = t0
Me.TextcmValue.Text = x
Else
Me.TextcmCPUCount.Text = ""
Me.TextcmValue.Text = "编译时发生错误!"
End If
End Sub
'例子 通过得到的参数地址来改变参数的值
' 通过名称也可以修改参数值,但速度较慢
Private Sub Commandcm_Click()
Dim cm As CCompile ' 声明新的表达式编译类CCompile
Set cm = New CCompile
Dim x As Double
Dim a As Double, b As Double, c As Double, d As Double
Dim Pa As Long, Pb As Long, Pc As Long, Pd As Long
Dim i As Long, Count As Long
Dim t0 As Double
a = Me.TextcmA.Text ' 获取参数值
b = Me.TextcmB.Text
c = Me.TextcmC.Text
d = Me.TextcmD.Text
If cm.SetText(Me.TextcmText.Text, "a,b,c,d", True) Then ' 设置编译的表达式和参数,并自动编译
Pa = cm.GetParameterAddress("a") ' 得到参数的地址
Pb = cm.GetParameterAddress("b")
Pc = cm.GetParameterAddress("c")
Pd = cm.GetParameterAddress("d")
Count = Me.TextcmCount.Text
Call cm.SetParameterA(Pa, a) ' 设置表达式中参数的值
Call cm.SetParameterA(Pb, b) ' 这几句代码可以放在循环中
Call cm.SetParameterA(Pc, c) ' 这样可以不断的改变参数的值
Call cm.SetParameterA(Pd, d)
t0 = cm.GetCPUCount() ' 获得当前CPU的周期计数
For i = 0 To Count - 1
x = cm.GetValue() ' 返回表达式的值 给变量 x
Next i
t0 = cm.GetCPUCount - t0 ' 得到运行时用去的CPU周期计数
Me.TextcmCPUCount.Text = t0
Me.TextcmValue.Text = x
Else
Me.TextcmCPUCount.Text = ""
Me.TextcmValue.Text = "编译时发生错误!"
End If
End Sub
Private Sub Commandcmcx_Click()
Dim cmcx As CCompileComplex ' 声明新的表达式编译类CCompileComplex
Set cmcx = New CCompileComplex
Dim x As TComplex
Dim a As TComplex, b As TComplex, c As TComplex, d As TComplex
Dim Pa As Long, Pb As Long, Pc As Long, Pd As Long
Dim i As Long, Count As Long
Dim t0 As Double
Dim TextComplexOk As Boolean
TextComplexOk = True
TextComplexOk = TextComplexOk And cmcx.StrToComplex(Me.TextcmcxA.Text, a.Real, a.Imag) ' 获取参数值
TextComplexOk = TextComplexOk And cmcx.StrToComplex(Me.TextcmcxB.Text, b.Real, b.Imag)
TextComplexOk = TextComplexOk And cmcx.StrToComplex(Me.TextcmcxC.Text, c.Real, c.Imag)
TextComplexOk = TextComplexOk And cmcx.StrToComplex(Me.TextcmcxD.Text, d.Real, d.Imag)
If Not TextComplexOk Then
Me.TextcmcxCPUCount.Text = ""
Me.TextcmcxValue.Text = "复数参数书写格式错误!"
ElseIf (cmcx.SetText(Me.TextcmcxText.Text, "a,b,c,d", True)) Then ' 设置编译的表达式和参数,并自动编译
Pa = cmcx.GetParameterAddress("a") ' 得到参数的地址
Pb = cmcx.GetParameterAddress("b")
Pc = cmcx.GetParameterAddress("c")
Pd = cmcx.GetParameterAddress("d")
Count = Me.TextcmcxCount.Text
Call cmcx.SetParameterA(Pa, a.Real, a.Imag) ' 设置表达式中参数的值
Call cmcx.SetParameterA(Pb, b.Real, b.Imag) ' 这几句代码可以放在循环中
Call cmcx.SetParameterA(Pc, c.Real, c.Imag) ' 这样可以不断的改变参数的值
Call cmcx.SetParameterA(Pd, d.Real, d.Imag)
t0 = cmcx.GetCPUCount() ' 获得当前CPU的周期计数
For i = 0 To Count - 1
Call cmcx.GetValue(x.Real, x.Imag) ' 返回表达式的值 给变量 x
Next i
t0 = cmcx.GetCPUCount - t0 ' 得到运行时用去的CPU周期计数
Me.TextcmcxCPUCount.Text = t0
Me.TextcmcxValue.Text = cmcx.ComplexToStr(x.Real, x.Imag)
Else
Me.TextcmcxCPUCount.Text = ""
Me.TextcmcxValue.Text = "编译时发生错误!"
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -