VB6 中的“Eval”功能:通过 Powershell 或其他方式替换 VBScript

问题描述 投票:0回答:1

在 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 转移到其他工具/方法。

powershell vb6
1个回答
2
投票

这是一个简单的

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
© www.soinside.com 2019 - 2024. All rights reserved.