悬赏百分,请教高手赐教!如何解析一个字符串表达式? 用TParser控件吧,专门的表达式控件,非常好用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用数据库来做,后台使用存储过程或Update语句来得出结果,我是这样做的:) 请讲清楚,你是要解析很多这样类似的表达式还是就是实现0.28*X+a*X-2.76一句,如果只想完成这一句,楼上的已经回答了,如果要解析很多的话,你要作编译了!!! To zhptj&mfc2001:表达式不定,如何定义函数呢?例如,在程序运行过程中,在Edit中输入(21.8*X-a)/m呢?To:Feiye:TParser那里有?我自己做了一个只能解析算式,不能解析代数式。 To netlib:我是要解析很多这样类似的表达式,如何作编译呢? 利用sql完成表达式的解析做方便了。把树枝替代进入表达式字符串,然后用sql算,比如select 6*3/4-6而且支持函数,方便吧? 想要TPARSER的朋友跟贴,我发给你们,带源码,绝对好用! 我找到链接了,从这里下载即可。http://vcl.vclxx.org/DELPHI/D32FREE/PARSER10.ZIP 大概是这样首先一个getsym的函数,用于读入字符然后就是很多判断语句,对各种东西都判断,然后分别存入相应的书组里面不过我觉得你要实现的这个,如果这样做的话,是不是太复杂了? 不如转个数据库然后用select 表达式 from ...来计算 guowzgyc (心系宝兰) 这个问题比较复杂,我作过一部分,我建议你先看看编译的书,如果有问题在一起讨论吧, 这个问题大家千万不要搞复杂了,TParser使用的例子: Example: Parser1.X := 100; Parser1.Y := 200; Parser1.Variable['z'] := 20; Parser1.Expression := 'sin(x)*cos(y)+z'; Result := Parser1.Value;就这么简单。 To Netlib:完全可以,只不过我只能加100分,增加分数时,系统总是弹出‘我最多只能加100分’的提示,我该怎么给你加分呢? http://vcl.vclxx.org/DELPHI/D32FREE/PARSER10.ZIP该页无法显示? 好像使用format就可以了,没必要那么麻烦吧! http://www.fractal.com.cn/fxxx/program/Compile_Hss.zip,这个控件是先编译后计算,速度很快。 求两个控件的名字~~~~ 单元格尽然不能合并 UDP通讯与SOCKET通讯有什么区别啊??? 急急急啊,callback 问题 !大家帮帮忙啊。。。。。 如何在advStringGrid中选中一行 如何才能提高DELPHI的水平 组件保存问题,请高手不吝赐教 image1覆盖image2,image1中间为透明可以看到image2,我想把他们合为一张图片,该如何解决? 删除,修改字段名的Sql语句分别是什么 怎样修改异常产生的窗体 回答了都有分吗?我怎么给别人加分呢? 看看这个SQL 怎么写?up有分。
来得出结果,我是这样做的:)
To:Feiye:TParser那里有?我自己做了一个只能解析算式,不能解析代数式。
把树枝替代进入表达式字符串,然后用sql算,
比如select 6*3/4-6
而且支持函数,方便吧?
http://vcl.vclxx.org/DELPHI/D32FREE/PARSER10.ZIP
首先一个getsym的函数,用于读入字符
然后就是很多判断语句,
对各种东西都判断,然后分别存入相应的书组里面
不过我觉得你要实现的这个,如果这样做的话,是不是太复杂了?
然后用select 表达式 from ...来计算
Parser1.X := 100;
Parser1.Y := 200;
Parser1.Variable['z'] := 20;
Parser1.Expression := 'sin(x)*cos(y)+z';
Result := Parser1.Value;
就这么简单。
该页无法显示?