我做了一个计算器程序,能随意进行四则运算,但感到不很完美,想让在输入两个数或运算符时,如果不合法,就弹出对话框提示,但我还不会用try except句子,看书试了好久都没成功,特来此请各位帮忙
程序代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit3.Text='+' then
edit4.Text:=inttostr(strtoint(edit1.Text)+strtoint(edit2.Text)) ;
if edit3.Text='-' then
edit4.Text:=inttostr(strtoint(edit1.Text)-strtoint(edit2.Text));
if edit3.Text='*' then
edit4.Text:=inttostr(strtoint(edit1.Text)*strtoint(edit2.Text));
if edit3.Text='/' then
edit4.Text:=floattostr((strtoint(edit1.Text))/(strtoint(edit2.Text)));
end;
end.
请高手能帮我加上异常处理的功能,要求只要输入有一项不正确,就提示;
程序代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit3.Text='+' then
edit4.Text:=inttostr(strtoint(edit1.Text)+strtoint(edit2.Text)) ;
if edit3.Text='-' then
edit4.Text:=inttostr(strtoint(edit1.Text)-strtoint(edit2.Text));
if edit3.Text='*' then
edit4.Text:=inttostr(strtoint(edit1.Text)*strtoint(edit2.Text));
if edit3.Text='/' then
edit4.Text:=floattostr((strtoint(edit1.Text))/(strtoint(edit2.Text)));
end;
end.
请高手能帮我加上异常处理的功能,要求只要输入有一项不正确,就提示;
解决方案 »
- 如果提高读取速度?
- 如何获取当前系统的屏幕颜色模式: 是256 色,增强色(16位)还是真彩色(32位)??急急!!
- 如何在fastreport中显示两张表的数据呢?
- 我要将我的数据库管理系统升级为web版本,请问用什么技术实现??
- 如何在TImage控件中显示jpg格式的图片
- 请问利用udp如何实现数据的传送
- 请问如何选中DBGrid中的所有记录?
- 非技术性问题,不过请大家来给我个参考
- 小弟初学Delphi,不知道在控件栏的哪一页可以找到TCustomPanel控件?请各位高手帮忙。
- 如何提取SQL里的信息
- Delphi & Interbase 程序发布问题?
- 大家帮我看看这个问题怎么解决?
begin
try
if edit3.Text='+' then
edit4.Text:=inttostr(strtoint(edit1.Text)+strtoint(edit2.Text)) ;
if edit3.Text='-' then
edit4.Text:=inttostr(strtoint(edit1.Text)-strtoint(edit2.Text));
if edit3.Text='*' then
edit4.Text:=inttostr(strtoint(edit1.Text)*strtoint(edit2.Text));
if edit3.Text='/' then
edit4.Text:=floattostr((strtoint(edit1.Text))/(strtoint(edit2.Text)));
except
MessageBox(0, '表达式不合法', '运算错误', MB_OK);
end;
end.
不过我更喜欢用下面的这种方式:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
if edit3.Text='+' then
edit4.Text:=inttostr(strtoint(edit1.Text)+strtoint(edit2.Text)) ;
if edit3.Text='-' then
edit4.Text:=inttostr(strtoint(edit1.Text)-strtoint(edit2.Text));
if edit3.Text='*' then
edit4.Text:=inttostr(strtoint(edit1.Text)*strtoint(edit2.Text));
if edit3.Text='/' then
edit4.Text:=floattostr((strtoint(edit1.Text))/(strtoint(edit2.Text)));
except
on E: Exception do
Application.MessageBox(PChar('计算时发生错误,原因:('+E.Message + ')'), '警告', MB_OK or MB_ICONINFORMATION);
end;
end.
on后面是什么异常才合适呢????
而是直接在 Windows 的资源管理器中双击,运行你的程序,并且用二楼、三楼的朋友的try except方法去捕捉。那个错误对话框就不会出现了。
如StrToIntDef等
详情请参照手册。