如何计算以下表达式中的根目录

时间:2013-04-15 07:01:19

标签: .net vb.net

我有一个表达式v((P1*P46)/3600),其中p1来自一个文本框,p46来自另一个文本框

  

例如:v((2.0*3.2)/3600)

我该如何计算?

这是我的代码:

Private Function calculatevitalexpression(ByVal strformulla As String, ByRef numtxt As TextBox, ByRef dtable As DataTable)
    Try
     strformulla =v((2.0*3.2)/3600)
        Dim Sc As New MSScriptControl.ScriptControl
        Sc.Language = "VBSCRIPT"
        strformulla = RemoveCharacter(strformulla, "P")
        Dim res As Double = Convert.ToDouble(Sc.Eval(strformulla))
        Dim result As Decimal = Math.Round(res, decimalplaces)
        numtxt.Text = result

     Finally
        'frmW.Close()
    End Try
End Function

1 个答案:

答案 0 :(得分:0)

要使用ScriptControl组件执行此操作,您必须通过AddObject将所有可能的输入值传递到控件中,以便脚本控件知道P1和{ {1}} - 例如(在示例中使用C#):

P46

这会添加所有foreach(var control in Controls) { if(control is TextBox && control.Name.StartsWith("P")) { // ^^^ some crude way of finding the candidates Sc.AddObject(control.Name, double.Parse(control.Text), false); } } 控件作为文本框,以及文本值的数字版本。

注意:请勿删除P...(您的P行) - 否则所有脚本都会显示RemoveCharacter - 这根本不涉及您的输入 < / em>的

但是,有可用的独立表达式评估引擎可以完成这项工作,但您仍需要告诉他们外部值。