如何在Delphi中计算一表达式的值,如:
    float a,b,c,d;
    a=10;
    b=10;
    c=10;
    string s;
    s:="(a+b)*c"
    d:=xxxxxxxx(s);
    这里,xxxxxxxx的地方用什么呢?    

解决方案 »

  1.   

    不行的,如果你要是详细的考虑,你算的是计算机的一个算法,要一个字符一个字符的考虑,如果你的a,b,c,不是动态的,直接计算,如果是动态的,请要判断你的这个字符串的从第一个字符到最后一个字符的相应的值,否则是不能计算的。
      

  2.   

    s:="(a+b)*c"
    这里就出问题了
    应该
    s:=IntToStr((a+b)*c);
    然后才能用floattostr
      

  3.   

    同意redher(红孩儿)的意见,s是一个字符串变量,如果硬性将其转化为浮点数可能会出现错误,除非s中存储的是一个数值
      

  4.   

    举例:s:="(a+b)*c"
        TMP1:=(a+b),TMP2:=C,S:=TMP1*TMP2;
        TMP1:=a+b;已经只有1个运算符,所以可以计算TMP:=20;
        S:=20*TMP2,只有1个运算符,也可以计算S=20*10=200;
      

  5.   

    如果Delphi中没有这类函数,只能自已做表达式解析函数吗?
      不好做啊,大家帮我
      

  6.   

    在VF中有个函数(Eval)可以实现,不知道在Delphi中有没有此类函数
      

  7.   

    参看
    http://blog.csdn.net/ly_liuyang/archive/2002/02/16/13334.aspx
      

  8.   

    Func(S)
     Fonc()是表达式解释函数,用于解释S算术表达式