myvar=0;
a:='myvar=5+10*2';
runproc(a);
showMessage(inttostr(myvar));
runproc要返回运行命令的正确与否,不需要支持类.]运行之后myvar=25;
VB中好像有这样功能的函数,但DELPHI中怎么实现?

解决方案 »

  1.   

    用 MS 的ActiveX控件MSScript,支持Basic, JScript,你看看吧。
      

  2.   

    好像涉及到表达式计算上Search.csdn.net 搜一搜“表达式计算”
      

  3.   

    解释型的语言才行。
    DELPHI是编译成机器码了的,除非自己写一个解释器来解释,或者把DELPHI的编译器等等打包进去执行还有可能。
      

  4.   

    学习下面的也许有用
    控制Script Control使用
    使用Scripting Control支持程序脚本化
    添加脚本引擎到程序中会带来很多好处,脚本支持可以让我们方便地定制软件来满足用户的需要而无须重新编译程序。还可以非常容易地解析用户在运行时输入的表达式和查询来生成特殊需要的报表而无须修改代码。脚本引擎可以使诸如此类的工作变得非常轻松。
    但是编写一个功能完善的脚本引擎却是一项非常艰巨的任务,幸运的是微软公司为程序员提供了强大的Script Control ActiveX控件。毫不夸张地说,我们完全可以利用Script Control只用很少的代码就可以实现类似Office中的VBA那样强大的功能。Script Control既可以当成ActiveX控件来使用,也可以通过自动化的方法来调用。当然ActiveX控件的形式对于开发来说是相对简单多了。注意:Win 95以后大部分的操作系统都内置了Script Control,当然也可以从http://msdn.microsoft.com/ scripting下载可单独安装的Script Control。
    1. 在Delphi中使用Script Control
    首先,我们需要安装Script Control,选Component | Import ActiveX Control添加Script Control 1.0,如图1.105所示。
    图1.105 图1.106
    安装好后,在窗体上放置一个Script Control,然后察看它的各项属性,如图1.106所示。
    它的Language属性缺省为空,可以输入VBScript,但也可以使用Jscript(不输入的话,解析脚本时会报错)。Timeout(超时)属性缺省为10,000 毫秒,如果超过时间就会产生一个错误,这样可以避免由于脚本逻辑错误引起的死循环。 AllowUI属性缺省为True,这表明控件会使用它自己的对话框显示信息或错误。UseSafeSubset属性缺省为False,这允许脚本运行不安全的命令(这类命令在正常安全设定时会引起IE浏览器显示一个安全警告信息)。
    现在我们演示一下Script Control的功能,在窗体上再放一个按钮,然后编写它的OnClick事件处理过程,另外别忘了设定ScriptControl的Language属性为vbscript:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ScriptControl1.ExecuteStatement('MsgBox "Hello, World!"');
    end;
    运行程序点击按钮后会弹出消息对话框,接下来我们看看ScriptControl的eval函数,它支持表达式解析,输入下面代码,然后运行程序:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowMessage(ScriptControl1.Eval(InputBox('demo','请输入运算表达式','')));
    end;
    运行程序后,在弹出的对话框中输入“3×2+1”,会得到正确的7,除了简单的表达式外,ScriptControl还支持数学、字符串、比较和布尔等高级运算。
      

  5.   

    用 MS 的ActiveX控件MSScript
    Install ActiveControl
    ShowMessage(ScriptControl.Eval('myvar=5+10*2'));
      

  6.   

    但这样呢行不行?
    for i:=1 to 5 do 
    begin
    scriptcontrol.eval('button'+inttostr(i)+'.caption=btn'+inttostr(i));
    end;
      

  7.   

    scriptcontrol.eval('button'+inttostr(i)+'.caption:=btn'+inttostr(i));