Delphi中如何利用一个edit控件实现双目运算
如用Delphi开发简易的计算器,实现数字的加减乘除运算,请写出加法运算的代码(如何保存第一个操作数,及如何获得第二个操作数)...
如用Delphi开发简易的计算器,实现数字的加减乘除运算,请写出加法运算的代码(如何保存第一个操作数,及如何获得第二个操作数)
展开
1个回答
2013-05-26
展开全部
//例: CalcByText('100+1000'), CalcByText('100-1000'), CalcByText('100*1000'), CalcByText('100/1000') function CalcByText(const StrExp: String): String;
var
aExp: pChar;
aOp,bOp: Integer;
i: Integer;
begin
aExp:=PChar(StrExp);
i:=1;
Result:='';
while aExp^<>#0 do
begin
if (aExp+1)^ in ['+','-','*','/'] then
begin
if i+1=Length(StrExp) then exit;
if not TryStrToInt(Copy(StrExp,1,i),aOp) then exit;
if not TryStrToInt(Copy(StrExp,i+2,Length(StrExp)-(i+2)+1),bOp) then exit;
case (aExp+1)^ of
'+': Result:=INTTOSTR(aOp+bOp);
'-': Result:=INTTOSTR(aOp-bOp);
'*': Result:=INTTOSTR(aOp*bOp);
'/': Result:=FLOATTOSTR(aOp/bOp);
end;
end;
inc(i);
inc(aExp);
end;
end;
var
aExp: pChar;
aOp,bOp: Integer;
i: Integer;
begin
aExp:=PChar(StrExp);
i:=1;
Result:='';
while aExp^<>#0 do
begin
if (aExp+1)^ in ['+','-','*','/'] then
begin
if i+1=Length(StrExp) then exit;
if not TryStrToInt(Copy(StrExp,1,i),aOp) then exit;
if not TryStrToInt(Copy(StrExp,i+2,Length(StrExp)-(i+2)+1),bOp) then exit;
case (aExp+1)^ of
'+': Result:=INTTOSTR(aOp+bOp);
'-': Result:=INTTOSTR(aOp-bOp);
'*': Result:=INTTOSTR(aOp*bOp);
'/': Result:=FLOATTOSTR(aOp/bOp);
end;
end;
inc(i);
inc(aExp);
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询