用TParser控件吧,专门的表达式控件,非常好用。

解决方案 »

  1.   

    用数据库来做,后台使用存储过程或Update语句
    来得出结果,我是这样做的:)
      

  2.   

    请讲清楚,你是要解析很多这样类似的表达式还是就是实现0.28*X+a*X-2.76一句,如果只想完成这一句,楼上的已经回答了,如果要解析很多的话,你要作编译了!!!
      

  3.   

    To zhptj&mfc2001:表达式不定,如何定义函数呢?例如,在程序运行过程中,在Edit中输入(21.8*X-a)/m呢?
    To:Feiye:TParser那里有?我自己做了一个只能解析算式,不能解析代数式。
      

  4.   

    To  netlib:我是要解析很多这样类似的表达式,如何作编译呢?
      

  5.   

    利用sql完成表达式的解析做方便了。
    把树枝替代进入表达式字符串,然后用sql算,
    比如select 6*3/4-6
    而且支持函数,方便吧?
      

  6.   

    想要TPARSER的朋友跟贴,我发给你们,带源码,绝对好用!
      

  7.   

    我找到链接了,从这里下载即可。
    http://vcl.vclxx.org/DELPHI/D32FREE/PARSER10.ZIP
      

  8.   

    大概是这样
    首先一个getsym的函数,用于读入字符
    然后就是很多判断语句,
    对各种东西都判断,然后分别存入相应的书组里面
    不过我觉得你要实现的这个,如果这样做的话,是不是太复杂了?
      

  9.   

    不如转个数据库
    然后用select 表达式 from ...来计算
      

  10.   

    guowzgyc (心系宝兰) 这个问题比较复杂,我作过一部分,我建议你先看看编译的书,如果有问题在一起讨论吧,
      

  11.   

    这个问题大家千万不要搞复杂了,TParser使用的例子:  Example:
        Parser1.X := 100;
        Parser1.Y := 200;
        Parser1.Variable['z'] := 20;
        Parser1.Expression := 'sin(x)*cos(y)+z';
        Result := Parser1.Value;
    就这么简单。
      

  12.   

    To Netlib:完全可以,只不过我只能加100分,增加分数时,系统总是弹出‘我最多只能加100分’的提示,我该怎么给你加分呢?
      

  13.   

    http://vcl.vclxx.org/DELPHI/D32FREE/PARSER10.ZIP
    该页无法显示?
      

  14.   

    好像使用format就可以了,没必要那么麻烦吧!
      

  15.   

    http://www.fractal.com.cn/fxxx/program/Compile_Hss.zip,这个控件是先编译后计算,速度很快。