各位好:
    在用VB做一个小软件,其中像实现一个这样的功能:
        就是在软件运行时,用户可以利用一个文本框输入一个一定格式的函数(如 Y = fun(x)),让软件在处理有些数据时,如由a值算b值时,采用用户输入的算法。
   现在还没思路的,网上查了下,这方面介绍较少,还请论坛大虾们解惑哈。谢谢。

解决方案 »

  1.   

    Private Sub Form_Load()
        Dim strText As String
        Dim y%, x%, a%
        x = 8
        a = 11
        
        strText = "Y = x*x+a"
        
        '将用户输入的表达式都替换掉
        strText = Replace(strText, "x", x)
        strText = Replace(strText, "a", a)
        
        y = WZcalc(Split(strText, "=")(1)) '实际传递给WZcalc的就是“8*8+11”
        MsgBox y
    End SubPublic Function WZcalc(ByVal Tmpstr$) As Double
       Dim sc
       Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"
       WZcalc = sc.Eval(Tmpstr)
       Set sc = Nothing
    End Function
      

  2.   

    谢谢你的帮助,的确可以哈。不过现在学Vb不深。对上面的
       Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"   ---这里有点不懂,网上查了下,好像是Visual Basic 脚本语 言啥的
       WZcalc = sc.Eval(Tmpstr)   ---Eval这里也不是懂
       Set sc = Nothing
    这里是不是设计到 类、Microsoft(R) Script Control控件 啥的了啊
    我感觉自己不是很明了
    请问应该从哪方面着手,才能较为深入的理解啊
    谢谢
      

  3.   

    Script Control控件帮助文档下载:
    http://download.csdn.net/source/3082425
      

  4.   

    确实不是特别难就是繁琐点,以前用c写过,进栈出栈,代码是写了一大堆,但是稳定性不敢保证。事实这个情况下也不需要再重复制造车轮了,vb中有现成的稳定的为什么不直接用呢。
      

  5.   

     Set sc = CreateObject("ScriptControl") '创建ScriptControl对象
      sc.Language = "VBScript"  ‘设置脚本语言为VBS
      WZcalc = sc.Eval(Tmpstr) ‘执行tmpstr的代码
      Set sc = Nothing ’释放sc对象
      

  6.   

    那个代码是手误吧,怎么能放在Form_Load里呢还有啊,运算式和X的值都给定义了,那返回不就只是75了?