procedure TForm1.Edit1Exit(Sender: TObject);
var
I: Integer;
begin
if not TryStrToInt(TEdit(Sender).Text, I) then
TEdit(Sender).SetFocus;
end;
var
I: Integer;
begin
if not TryStrToInt(TEdit(Sender).Text, I) then
TEdit(Sender).SetFocus;
end;
if (edit1.text[i] <'0' ) or ( edit1.text[i]>'9') then showmessage('err');
function IsNumeric(Str_edit:string):boolean;
var
Int_edit :integer;
begin
try
Int_edit := StrToInt(Str_edit);
Result := True;
except
Result := False;
end;
end;
我觉得在输入时判断比较好,或用地三方EDIT构件
begin
if (ord(key)<48) or (ord(key)>57) then
begin
key:=#0;
end;
end;
var
Int_edit :integer;
begin
try
Int_edit := StrToInt(Str_edit);
Result := True;
except
Result := False;
end;
end;
我做了消息处理,做了个组件:TtzDigitEdit
下载:http://tzdgg.freephp.digiro.net/MyCo.zip
属性:Style,支持Integer,Float,Currency,Text. 多多指教!--男人:)
begin
try
StrToInt(Edit1.Text);
except
ShowMessage('请输入数字');
end;
这样可以的,要在离开Delphi的IDE时候才行,要不会有异常。
s:string;
begin
s:=edit1.text;
for i:=1 to length(s) do begin
if s[i] in [0..9] then
count:=count+1;
end;
form1.cation:='ni you '+ inttostr(count)+'ge shu zi';
z这样就可以解决了
在使用s的使用先截掉多余的空格s := trim(edit1.text);
判断时if s[i] in ['0'..'9'] then
try
strtoint(Edit.text);
except
showmessage('err');
Edit.setfocus;
end;
for i:=1 to length(edit1.text) do
if (edit1.text[i] <'0' ) or ( edit1.text[i]>'9') then showmessage('err');
似乎把 小数点 给排除掉了,不太好吧?