procedure TForm1.Button1Click(Sender: TObject); var x:real; i:integer; begin val(edit1.text,x,i); if i=0 then begin showmessage('数字'); end else begin showmessage('字符'); end; end;
小弟在程序中用象 ‘sysu(死树)’的异常处理后,老是蹦如下对话框,之后继续运行才出现自己设置的异常捕捉处理!!!很是纳闷,能不能不让这个对话框出现,直接出现自己设置的异常捕捉处理????? --------------------------- Debugger Exception Notification --------------------------- Project Project1.exe raised exception class EConvertError with message ''edit1' is not a valid integer value'. Process stopped. Use Step or Run to continue. --------------------------- OK Help ---------------------------
这个异常是调试时被Delphi截获了,若是单独运行是不会出现的, 当然在调试时也可以把它屏蔽掉, Tools->Debugger Options->Language Exceptions->Stop on Delphi Exceptions不打勾。
不可以啊!用Keydown事件的话,参数key的数据类型是word,而keypress事件参数key的数据类型是char啊,if not key in ['0'..'9'] then在keydown事件中不行的,应该在keydown怎么写if 条件呢???
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if not (Key in [Ord('0').. Ord('9')]) then ShowMessage('字符') else ShowMessage('数字'); end;
StrToInt(Edit1.Text);
ShowMessage('数字');
except
ShowMessage('字符');
end;
if Key in ['0'..'9'] then //数字
else
if key in ['0'..'9'] then
return;
if not key in ['0'..'9'] then
return;
var
x:real;
i:integer;
begin
val(edit1.text,x,i);
if i=0 then
begin
showmessage('数字');
end
else
begin
showmessage('字符');
end;
end;
StrToInt(Edit1.Text);
ShowMessage('数字');
except
ShowMessage('字符');
end;
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EConvertError with message ''edit1' is not a valid integer value'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
当然在调试时也可以把它屏蔽掉,
Tools->Debugger Options->Language Exceptions->Stop on Delphi Exceptions不打勾。
另外象 ilang(中雨)和 pengdali(大力) 大大的方法,我如果想用KeyDown事件的话if 条件应该怎么写呢????
return;和press的一样
faint 还有你不会连IF语句都不会写吧
Shift: TShiftState);
begin
if not (Key in [Ord('0').. Ord('9')]) then
ShowMessage('字符')
else
ShowMessage('数字');
end;