请问try.... except 的用法问题(40分)

  • 主题发起人 主题发起人 我是鱼
  • 开始时间 开始时间

我是鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
我为了保证向一个EDIT控件中输入的为数字,特用了try ,except,代码如下,为什么不行呢?
try
mperror:=StrToInt(Edit1.Text);
except
showmessage('出错率必须为数字');
abort;
end;//try
另外,怎样保证向一个EDIT控件中输入的为数字?有没有这方面的函数?
StrToInt只能返回转换后的值,但不能事先判断是否能转换成功,请问怎样解决?
 
在onkeypress中加入下面代码:
if (not (key in ['0'..'9'])) and (key <> '.') and (key <> chr(VK_BACK))
and (key <> chr(VK_DELETE)) and (key <> chr(VK_RETURN))
and (key <> chr(VK_TAB)) then
begin
beep;
//if key = chr(VK_RETURN) then key := chr(VK_TAB);
key := #0;
end;
 
或者可以直接用只能输入数字的edit控件。
 
不用象duckstar写的那么麻烦:
if key=#13 then SelectNext(ActiveControl,true,true) //如果是回车,跳到下一控件
else not( key in ['0'..'9','.',#8]) then key:=#0;
//其中#8代表backspace键,key:=#0使之输入为空。
事先判断是否为数字,我用的方法和你类似,是在一个公共单元中建一个函数,调试时转
换不成功还是会有提示,但执行时不会:
Function IsNumeric(S:string):Boolean;
var
da:Double;
begin
Result:=False;
if S='' then exit;
try
Da:=StrtoFloat(S);
Result:=true;
except
exit;
end;
end;
 
哈哈,用Val函数最好了,不会有异常的!
 
To shenloqi:
Val函数怎么用啊?
 
另外我的try ...except 为什么总不起作用啊?
 
var
vInt,IsInt:Integer;
Val(edit1.Text,vInt,IsInt);
if IsInt=0 then
begin
end;
这样就可以了,如果判断是否浮点数,只要把vInt类型改Double就可以了。
 
多人接受答案了。
 
后退
顶部