手头上有个问题,就是写一个关于“(”“)”“+”“-”“*”“/”的算法,要求是写个函数,让这个函数计算出某个带有以上运算符的式子;例如,式子为((a+b)*c)+(c+d)*c ,通过函数类似count(s:string;value:array of string)计算出式子结果,其中s为具体的式子,value为变量的值。
不知道网上有没有现成的这样的函数,,很急啊,望高手们帮忙!!

解决方案 »

  1.   

    uses ComObj ;
    {$R *.dfm}function Eval(expStr: string): string;
    var
        js: OleVariant;
    begin
        js := CreateOleObject('ScriptControl');
        js.Language := 'VBScript';
        Result := js.Eval(expStr);
        js := Unassigned;
    end;procedure TForm1.FormCreate(Sender: TObject);
    var a,b,c,d:integer;
    begin
      a:=2900;
      b:=434;
      c:=200;
      d:=34;
      showmessage(Eval(format('((%d+%d)*%d)+(%d+%d)*%d',[a,b,c,c,d,c])));
    end;
      

  2.   

    呵呵,如果你的程序能连数据库的话,用一个select语句就可以得到结果了
    比如
    s:='23*4+15-26';
    adoquery1.sql.add('select '+s);
    然后open
    showmessage(adoquery1.fields[0].asstring)看看就知道了
    给分吧,哈哈
      

  3.   

    Google上能找到的http://lysoft.7u7.net