怎么实现对编辑框中输入的表达式进行运算
delphi吧
全部回复
仅看楼主
level 1
z_g_j_ 楼主
假定我在编辑框中输入3+5,然后我按下回车,希望编辑框中被其运算结果8替换,该怎么实现呢?
2014年02月21日 14点02分 1
level 13
// 处理EDIT的OnKeyPress事件
// 下面这样可以处理 ‘1 +2 + 4 +1’  这种带空格且有多个相加数的情况
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
var
sLi: TStringList;
i, d: Integer;
begin
if Ord(Key) = VK_RETURN then
begin
sLi := TStringList.Create;
ExtractStrings(['+'], [' '], PChar(edt1.Text), sLi);
d := 0;
for i := 0 to sLi.Count - 1 do
begin
d := d + StrToInt(StringReplace(sLi[i], ' ', '', [rfReplaceAll]));
end;
edt1.Text := IntToStr(d);
sLi.Free;
end;
end;
2014年02月21日 16点02分 2
有这么麻烦吗?直接edt1.Text:='8';不就是结果吗?
2014年02月22日 05点02分
回复 yzf911 :这个肯定不行撒,我输入4+5呢,你这个所有的输入都显示8,就没意义了
2014年02月23日 09点02分
回复 z_g_j_ :那你又怎么知道他不打x^y或power(x,y)呢?
2014年02月23日 09点02分
这个只考虑了加法运算,没注意看标题,如果要多钟运算表达式,根据上面代码自己举一反三吧。
2014年02月23日 12点02分
level 6
1,优先级重排 2*(1+2)转成1+2*2
2,顺序计算
3,抄楼上即可
2014年02月22日 03点02分 3
level 13
楼主这种问题,请先把限制条件搞清楚。
没人想给你写个AI算法
2014年02月23日 12点02分 4
level 13
像这种问题,我都是建一个内存数据库表来算,比如说:
select (2
+3
)*7-45 from tb_xxx
又简单又方便
2014年02月23日 16点02分 5
求大神指点,内存数据库是怎么回事?简单的说说就行我是新手。没接触过数据库的操作
2014年02月24日 00点02分
回复 热情的小元 :那你还是先接触数据库啊,等你明白怎么操作数据库了,再回过头来看这个问题
2014年02月24日 01点02分
这个是个好办法 否则 规则一大堆 不好玩了 哈哈
2014年02月24日 03点02分
回复 yc515623876 :还可以使用数据库字义好的一些函数[滑稽]
2014年02月24日 16点02分
level 9
这个还不用数据库,就是要逐字判断,然后组合成算式
2014年02月27日 00点02分 6
1