delphi异常处理的问题!计算器~~~

来源:百度知道 编辑:UC知道 时间:2024/06/26 00:39:18
小弟最近用delphi 7.0做一个计算器,实现最基本的加、减、乘、除运算,主要的方法就是用整型变量n(integer)来标识按下的是哪一个运算符按钮,分别赋值1,2,3,4.最后根据n的值,用case...of 语句来判断是按下的哪一个运算符按钮,声明了两个临时变量temp1(string类型),temp2(real类型)来存放临时数据,但程序运行时,存在了一个问题,不按数字按钮,而直接按"="符号,就会报错,偶知道这是程序的异常,但不知道要如何处理!请教大虾不吝赐教!
界面的大致情况是这样的:一个Edit1是运算框,下面分别是1至9的按钮,还有一个清空edit1的按钮,加、减、乘、除按钮,最后一个"="按钮。下面给出implementation主要代码:
var
Form1: TForm1;
temp1:string;
temp2:real;
n :integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'3';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'4';
end;

procedure TFor

不用写什么try..except
做个简单的保护 把button15Click改成
if Edit1.Text = '' then
begin
Exit;
end
else
begin
case n of
1:temp2:=strtofloat(temp1)+strtofloat(edit1.Text);
2:temp2:=strtofloat(temp1)-strtofloat(edit1.Text);
3:temp2:=strtofloat(temp1)*strtofloat(edit1.Text);
4:if strtofloat(edit1.Text)=0 then
begin
showmessage('³ýÊýΪÁã¿©£¡');
exit;
end
else
temp2:=strtofloat(temp1)/strtofloat(edit1.Text);
end;
edit1.Text:=floattostr(temp2);
end;
end;
报错是因为在没有数值的情况下strtofloat(edit1.Text)是无法实现的。