例如
  var
    s : string;
      s  :=  '100 *4.17/0.5*(55.22+22)/3.14';
  怎样直接用它计算,有没有好的办法?

解决方案 »

  1.   

    表达式分解,可以用逆波兰表达式
    就是把中序表达式转换为逆波兰表达式,然后计算
    参见:
    http://baike.baidu.com/view/552648.htm
      

  2.   

    写一个公式解释器
    function DoCalc(s:string):real;
    begin
      ...
      result:=...;
    end;
      

  3.   

    参考一下这个
    function ExpCalc(exp: string): string;
    var
      vScript: Variant;
    begin
      vScript := CreateOleObject('ScriptControl');
      vScript.Language := 'VBScript';
      Result := vScript.Eval(exp);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
    begin
      s:=ExpCalc('100 *4.17/0.5*(55.22+22)/3.14');
      ShowMessage(s);
    end;
      

  4.   

    我知道有一个第三方组件可以实现你的要求。
    你去搜一下:
    Expression parser
      

  5.   


    uses ComObjfunction CalcExp(Formula: string): string; //表达式计算
    var
      js: OleVariant;
    begin
      js := CreateOleObject('ScriptControl');
      js.Language := 'JavaScript';
      try
        try
          Result := js.Eval(Formula);
        except
          Result := 'Err';
        end;
      finally
        js := Unassigned;
      end;
    end;