不让用户输入数字以外的字符就行了 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not(key in['0'..'9',#8]) then begin Key:=#0; Beep; end; end;
楼上的这样不全面,小数点不考虑了吗?,一个点或n多个点的错误呢? 用40Star(陪你去看--☆流星雨★) 的方法,但是把代码放到EDIT的OnChange 里更好。procedure TMainForm.BTInputEditChange(Sender: TObject); begin //只输入数字的编辑框 try if (Sender as TEdit).Text<>'' then StrToFloat(TEdit(Sender).Text); except MessageDlg('请注意所输入字符的正确性'+#13+' "'+TEdit (Sender).Text+'"',mtWarning,[mbOk],0); if length(TEdit(Sender).Text)>1 then PostMessage(TEdit(Sender).Handle,WM_CHAR,VK_BACK,0) else begin TEdit(Sender).Text:='0'; TEdit(Sender).SelectAll; end; end; end;
wk_knife(老夫聊发少年狂) , 你这段代码只要输入非数字就会出错。
var {没有空格真烦} I: Read; {没有空格真烦} E: Integer; begin {没有空格真烦} Val(Edit1.Text, I, E); {没有空格真烦} if E <> 0 then {没有空格真烦} ShowMessage('这个问题已经太烂了!'); end;
看看delphi中的帮助,熟悉pascal的都知道val这个过程吧,看看下面delphi带的例子,不用产生异常就可以判断是否为数值,而且可以判断整数还是浮点数,只要把i的类型改为real即可。 uses Dialogs; var I, Code: Integer; begin { Get text from TEdit control } Val(Edit1.Text, I, Code); { Error during conversion to integer? } if Code <> 0 then MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0); else Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));end;
to 200eboy(柳笛) 你不在IDE环境下运行程序试试。就会弹出一个对话框告诉用户输错了。 在IDE下有DELPHI的出错处理在把关,他会先弹出一个错误提示, 继续单击RUN按钮运行即可,不必以为是出了问题。
var
i:integer;
begin
try
i:=strtoint(edit1.Text );
except
ShowMessage('非数字');
end;
end;
isnumeric是VB里的吧!
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in['0'..'9',#8]) then
begin
Key:=#0;
Beep;
end;
end;
用40Star(陪你去看--☆流星雨★) 的方法,但是把代码放到EDIT的OnChange
里更好。procedure TMainForm.BTInputEditChange(Sender: TObject);
begin //只输入数字的编辑框
try
if (Sender as TEdit).Text<>'' then
StrToFloat(TEdit(Sender).Text);
except
MessageDlg('请注意所输入字符的正确性'+#13+' "'+TEdit
(Sender).Text+'"',mtWarning,[mbOk],0);
if length(TEdit(Sender).Text)>1 then
PostMessage(TEdit(Sender).Handle,WM_CHAR,VK_BACK,0)
else
begin
TEdit(Sender).Text:='0';
TEdit(Sender).SelectAll;
end;
end;
end;
你这段代码只要输入非数字就会出错。
{没有空格真烦} I: Read;
{没有空格真烦} E: Integer;
begin
{没有空格真烦} Val(Edit1.Text, I, E);
{没有空格真烦} if E <> 0 then
{没有空格真烦} ShowMessage('这个问题已经太烂了!');
end;
uses Dialogs;
var I, Code: Integer;
begin
{ Get text from TEdit control }
Val(Edit1.Text, I, Code);
{ Error during conversion to integer? }
if Code <> 0 then
MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0);
else
Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));end;
在IDE下有DELPHI的出错处理在把关,他会先弹出一个错误提示,
继续单击RUN按钮运行即可,不必以为是出了问题。