Edit框中限制输入字符报错!? ( 积分: 50 )

  • 主题发起人 主题发起人 高手贵姓
  • 开始时间 开始时间

高手贵姓

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Edit3Change(Sender: TObject);
var
i: Integer;
begin
i := StrToInt(Edit3.Text);
if i > 65535 then
begin
showmessage('输入数值过大,请重新输入');
Edit3.Text:='';
end;
end;

请问上面这段代码为什么编译报错?如果去掉 Edit3.Text:=''; 这句就可以编译通过没问题!
请问如果我想让Edit3框中如果输入的字符大于65535,则清空输入的字符,这段代码该如何修改?
 
Edit3.Text:='';
触犯Charge事件
又执行StrToInt('')
空串转换产生异常
.............
哎,不知说什么好了
 
procedure TForm1.Edit3Change(Sender: TObject);
var
i: Integer;
begin
if Edit3.text<>'' then
begin
i := StrToInt(Edit3.Text);
if i > 65535 then
begin
showmessage('输入数值过大,请重新输入');
Edit3.Text:='';
end;
end;
end;
 
楼上的方法依然编译报错!
 
你是不是输入的不是数字.你可以在keypress事件下加段代码来过滤.
上面的代码,你不要在调试环境下测试.不然你输入不是数字就出错.
 
是数字啊

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8])
then
begin
key:=chr(0);//将输入的字符置为空,相当于没有输入
showmessage('输入格式错误,请输入数字');
end;
end;
 
这个可用:
OnKeyPress里写:
begin
if (not (Key in ['0'..'9',#8])) or (StrToIntDef(TEdit(Sender).Text+Key,0)>High(Word)) then
begin
Key:=#0;
Beep();
end;
end;
 
change 事件中 有Edit3.Text:='';
又再change一次 ,然后有 Edit3.Text:='';
又再change一次
............
 
在我的机子上测试了,gotiger的代码完全可行..
 
以下代码测试成功!

procedure TForm1.Edit1Change(Sender: TObject);
var
i: Integer;
s:string;
begin
try
i := StrToInt(Edit1.Text);
except
exit;
end;
if i > 65535 then
begin
Edit1.Text:='';
showmessage('输入数值过大,请重新输入');
end;

end;
 
编译报错?虽然没运行程序,但这段代码不可能会编译报错,最多是运行报错,原因应该是循环触发事件,strtoint没有做异常保护。
 
procedure TForm1.Edit1Change(Sender: TObject);
var
i: Integer;
s:string;
begin
try
i := StrToInt(Edit1.Text);
except
exit;
end;
if i > 65535 then
begin
showmessage('输入数值过大,请重新输入');
Abort;
Edit1.Text:='';
end;

end;
 
keypress事件
 
procedure TForm1.Edit1Change(Sender: TObject);
var
i: Integer;
s:string;
begin
try
i := StrToInt(Edit1.Text);
except
exit;
end;
if i > 65535 then
begin
showmessage('输入数值过大,请重新输入');
Abort;
Edit1.Text:='';
end;

end;
运行通过
 
帮你顶一个,顺便发个交流群:
无论你是超极菜鸟,亦或是绝顶高手,在这里偶们静下心来平等地交流学习:
delphi交流群:4654765(delphi天堂)欢迎您的加入!让我们共同进步!!
加入者必须改名片为:{地点}+姓名 注:不改者勿扰!
 
楼上的菜鸟群就不发再发了,
按你的介绍,绝顶高手难道也有需要向超级菜鸟学习的地方?
所以可以确定里面全是菜鸟,进去就会被不停地提些低级问题,而无法得到学习。
问多了高手也会不耐烦,也失去了进群学习地意义。
从且确定此群水平。
 
白河愁今天怎么有空呀~~西西~~我要学习我要学习~~不过我工作涉及到的面很窄所以总停留。顺便发布:退休人员-社保指纹年检系统 需要的QQ:258598555
 
多人接受答案了。
 
后退
顶部