在 VB6 程序中,我一直在使用 VBScript 来计算字符串中包含的数字数学表达式。
(字符串是通过编程的、基于字符串的代数操作算法生成的,该算法用数值替换数学表达式中的代数变量以检查结果)。
以下代码说明了数值数学表达式字符串的求值:-
vb6
mathEx$="(1+2)*(5^2)"
Set ob = CreateObject("MSScriptControl.ScriptControl")
ob.Language = "VBScript"
result = ob.eval(mathEx$) '---> 75
现在(2023 年 10 月)VBScript 将正式从未来的 Windows 版本中排除, 我想知道是否以及如何使用 Powershell(或其他方式)来提供此功能(在 VB6 程序中)?
编辑1 这个问题没有回答这个问题,它根本没有讨论从VB6访问Powershell。
编辑2 我已经将问题的焦点从 Powerscript 转移到其他工具/方法。
这是一个简单的
Eval
函数,它使用 JET 引擎 (MS Access) 表达式计算器来完成这项工作
Option Explicit
Private Function Eval(sExpression As String) As Variant
Static oConn As Object
Dim sConnStr As String
If oConn Is Nothing Then
sConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Environ$("TEMP") & "\~eval.tmp"
On Error Resume Next
CreateObject("ADOX.Catalog").Create sConnStr
On Error GoTo 0
Set oConn = CreateObject("ADODB.Connection")
oConn.Open sConnStr
End If
Eval = oConn.Execute("SELECT " & sExpression).Fields(0).Value
End Function
Private Sub Form_Load()
Debug.Print Eval("sin(1+2)*(5^2)")
End Sub