如何计算 x := A(A是一个算术表达式的字符串)!

yypeng 2001-03-08 11:34:00
我很想知道此答案 ,比如,我在EDIT1中输入 3*5+(26/2) 如何将其转为一个算术表
达式呢?DELPHI有没有提供此函数?
如果没有,请问各位高手是否能够解决?
不好意思 ,麻烦各路高手了!
...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenzm 2001-03-13
  • 打赏
  • 举报
回复
还没有给分。。。。。:)
chenjiong 2001-03-12
  • 打赏
  • 举报
回复
var a,b:integer;
begin
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
edit3:=inttostr(a+b);
end;
不能有小数字点,唉,菜鸟半天的成果。谁能教教我可以用小数点后几位算的?能*/-。
wangxd1976 2001-03-12
  • 打赏
  • 举报
回复
gz
wenzm 2001-03-10
  • 打赏
  • 举报
回复
其实《数据结构>>(严蔚敏)的讲介堆栈时有个算法例子,把它变成代码就可以了!
不过懒人有懒福---我也碰到过这种问题,我用一下办法解决了:
with Qry_cal do
begin
close;
SQL.clear;
SQL.add('update Tab1 set cal=表达式')
//cal为一Float字段,Tab1最好只有一个记录省得定位
ExecSQL;
close;
SQL.clear;
SQL.add('select cal from tab1 ')
open;
A:=fieldbynbame('cal').asfloat
end;
结合Try...exceot 你还可以防止表达式定义错了!


30分也太少了
bill_lasker 2001-03-10
  • 打赏
  • 举报
回复
有没有能解方程的东东啊?
yypeng 2001-03-10
  • 打赏
  • 举报
回复
能否说得更明白一些,谁有这方面的控件呢?
我下载了DWSCRIPT,但不会用,请问(没脾气),能否详细说明一下呢?谢啦!
notemper2 2001-03-09
  • 打赏
  • 举报
回复
到 www.dwscript.com 下载 dws (1.6 版即可)
有各种脚本解释器
sug 2001-03-09
  • 打赏
  • 举报
回复
这是类似编译器的做法。有几中选择,其中逆波兰表达式计算速度较快。
可以先将字符串转化成逆波兰表达式(如果不清楚,可以看《编译原理》教科书),
然后再将该表达式计算出来(这个算法很简单)。

//sundayboys(sunboy)说得没错,要注意运算优先级。
david_lirihui 2001-03-09
  • 打赏
  • 举报
回复
这其实是做一个类似计算器的东西,主要是处理运算的优先级。找一本<<数据结构>>的书看看吧,可以用栈来实现!
sundayboys 2001-03-08
  • 打赏
  • 举报
回复
这个只有自己编写处理程序了。处理时注意运算优先级。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧