引用“Microsoft Script Control 1.0” Private Sub Command1_Click() Dim VBEval As New ScriptControl Dim Result As String On Error GoTo E VBEval.Language = "vbscript" Result = VBEval.Eval(Text1.Text) MsgBox Text1.Text & "=" & Result Exit Sub E: MsgBox "表达式错误,检查是否输入了非法字符!" End Sub
Option Explicit Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0 End Function Sub calc(ByVal x As String) Dim result ExecuteLine "dim x as double" ExecuteLine "x= " & x ExecuteLine "clipboard.settext x" result = Clipboard.GetText MsgBox x & "=" & result Set result = Nothing End SubPrivate Sub Command1_Click() calc Text1 End SubPrivate Sub Form_Load() Text1.Text = "(1+(2*((3-2)-4)))/2" End Sub
laviewpbt(人一定要靠自己)能不能注释一下,看的不是很懂啊
楼上的,自己写解码程序识别表达式是不错,但是对于 复杂的表达式呢,就不那么容易写了,最主要的是稳定性。to 搂主 ===================== laviewpbt(人一定要靠自己) 主要是给你了一个API函数 他用那个API函数来解释你的表达式,就这么简单。 API函数的使用方法他也有例子了。不过建议使用 Microsoft Script Control 1.0,可以解释整段VBScript语言。 非常好用,我就用它作了一个自己的ASP解释器。
Private Sub Command1_Click()
Dim VBEval As New ScriptControl
Dim Result As String
On Error GoTo E
VBEval.Language = "vbscript"
Result = VBEval.Eval(Text1.Text)
MsgBox Text1.Text & "=" & Result
Exit Sub
E:
MsgBox "表达式错误,检查是否输入了非法字符!"
End Sub
Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Sub calc(ByVal x As String)
Dim result
ExecuteLine "dim x as double"
ExecuteLine "x= " & x
ExecuteLine "clipboard.settext x"
result = Clipboard.GetText
MsgBox x & "=" & result
Set result = Nothing
End SubPrivate Sub Command1_Click()
calc Text1
End SubPrivate Sub Form_Load()
Text1.Text = "(1+(2*((3-2)-4)))/2"
End Sub
复杂的表达式呢,就不那么容易写了,最主要的是稳定性。to 搂主
=====================
laviewpbt(人一定要靠自己) 主要是给你了一个API函数
他用那个API函数来解释你的表达式,就这么简单。
API函数的使用方法他也有例子了。不过建议使用
Microsoft Script Control 1.0,可以解释整段VBScript语言。
非常好用,我就用它作了一个自己的ASP解释器。