function IsNumber(mStr: string): Boolean; { 返回字符串是否是正确的数字表达 } var I: Real; E: Integer; begin Val(mStr, I, E); Result := E = 0; E := Trunc(I); end; { IsNumber }
你也可以自己写一个函数用来判断输入是不是数字呀, 如果不想写用val是可以判断的哦,
try i := StrToInt(s); except //如果出现异常s就不是数字 end;看看StrToInt的帮助就知道了
可以用key来判断 if key in[0..9] then begin ....... end;
function IsNumbe(c:Char):boolean; begin Result:=c in ['0'..'9']; end; //在Edit1 OnkeyPress 中调用 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not IsNumber(Key) then Key:=#0; end;
你可以写在KeyPress事件里面。 begin if (key in ['0'..'9']=false) and (word(key)<>vk_back) and (word(key)<>VK_RETURN) then begin key:=#0; Application.MessageBox('你输入的信息不是数字,请重新输入!', '注意',MB_OK+MB_ICONError) end; end; //Vk_vack代表BACKspace键。VK_RETURN代表回车。
楼上几位有问题: 当然不能用KeyPress事件,如用户用了Paste后就不能判断了。
in IdGlobal.pas function IsNumeric(c: char): Boolean;
这样就可以 function IsNumber(Num:String):Boolean; begin Result:=true; try StrToFloat(Num); except Result:=False; end; end;
试下这样,同样可以实现 honey_001(雪糕) 的效果:if (key>#57) or (key<#48) then showmessage('你输入了有效数字!') else begin key:=#0; showmessage('你输入的不是有效数字!'); end;
var
I: Real;
E: Integer;
begin
Val(mStr, I, E);
Result := E = 0;
E := Trunc(I);
end; { IsNumber }
如果不想写用val是可以判断的哦,
i := StrToInt(s);
except
//如果出现异常s就不是数字
end;看看StrToInt的帮助就知道了
if key in[0..9] then
begin
.......
end;
begin
Result:=c in ['0'..'9'];
end;
//在Edit1 OnkeyPress 中调用
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not IsNumber(Key) then
Key:=#0;
end;
begin
if (key in ['0'..'9']=false) and (word(key)<>vk_back) and (word(key)<>VK_RETURN) then
begin
key:=#0;
Application.MessageBox('你输入的信息不是数字,请重新输入!', '注意',MB_OK+MB_ICONError)
end;
end;
//Vk_vack代表BACKspace键。VK_RETURN代表回车。
function IsNumber(Num:String):Boolean;
begin
Result:=true;
try
StrToFloat(Num);
except
Result:=False;
end;
end;
showmessage('你输入了有效数字!')
else
begin
key:=#0;
showmessage('你输入的不是有效数字!');
end;