Edit框中如何限制只能输入正整数且最大不能超过65535!? ( 积分: 200 )

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

高手贵姓

Unregistered / Unconfirmed
GUEST, unregistred user!
Edit框中如何限制只能输入正整数且最大不能超过65535!?即只能输入0-65535之间的任意整数。
 
用RxSpinEdit
 
KeyPress事件:<br>begin<br>&nbsp;&nbsp;if&nbsp;(not&nbsp;(Key&nbsp;in&nbsp;['0'..'9',#8]))&nbsp;or&nbsp;(StrToInt(TEdit(Sender).Text))&gt;=High(Word))&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Key:=#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;Beep();<br>&nbsp;&nbsp;end;<br>end;
 
想用Edit的话&nbsp;&nbsp;&nbsp;可以自己控制<br>在OnChange事件中判断他的大小不就可以了嘛!<br>看你想达到什么效果,比如输入67890,可以&nbsp;显示65535也可以显示6789,随你控制<br>也可以在OnKeyPress中控制,判断他输入这个数字后会不会大于65535,<br>如果大于了就直接Key&nbsp;:=&nbsp;#0;就OK了
 
我写了&nbsp;&nbsp;&nbsp;if&nbsp;not(key&nbsp;in&nbsp;['0'..'9'])&nbsp;and&nbsp;not&nbsp;(strtoint(Edit3.text)&lt;=&nbsp;65535)&nbsp;then&nbsp;这样为什么报错!?
 
copy&nbsp;我代码吧<br>现成的都给你了,还错
 
if&nbsp;(not&nbsp;(Key&nbsp;in&nbsp;['0'..'9',#8]))&nbsp;or&nbsp;(StrToInt(TEdit(Sender).Text))&gt;=High(Word))&nbsp;<br>请问#8什么意思?&nbsp;&nbsp;&nbsp;另外我要限制小于等于65535,or后面的代码可以实现?
 
而且代码编译错误!
 
High(Word)就是65535<br>扩号没对应上,我手头没delphi,小改一点就行了,哎,这要是改不了,你等明天给你现成的吧
 
多了一个“)”,用下面的试试吧:<br>KeyPress事件:<br>begin<br>&nbsp;&nbsp;if&nbsp;(not&nbsp;(Key&nbsp;in&nbsp;['0'..'9',#8]))&nbsp;or&nbsp;(StrToInt(TEdit(Sender).Text)&gt;=High(Word))&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Key:=#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;Beep();<br>&nbsp;&nbsp;end;<br>end;
 
依然报错。。。StrToInt好像不能和&nbsp;High(Word)比较
 
都是integer,当然可以比较,只是扩号没对上而已,我这的机器没装d<br>其实你小改一下就ok了
 
你加我qq吧<br>远程搞一下<br>10040231
 
procedure&nbsp;TForm1.Edit1Change(Sender:&nbsp;TObject);<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;procedure&nbsp;InputError;<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage('请输入1-65535之间的数字');<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit1.Clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit1.SetFocus;<br>&nbsp;&nbsp;end;<br><br>var<br>&nbsp;&nbsp;I:&nbsp;Integer;<br>begin<br>&nbsp;&nbsp;if&nbsp;Edit1.Text&nbsp;&lt;&gt;&nbsp;''&nbsp;then<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;I&nbsp;:=&nbsp;StrToInt(Edit1.Text);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(I&nbsp;&lt;&nbsp;1)&nbsp;or&nbsp;(I&nbsp;&gt;&nbsp;65535)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputError;<br>&nbsp;&nbsp;except<br>&nbsp;&nbsp;&nbsp;&nbsp;InputError;<br>&nbsp;&nbsp;end;<br>end;<br>不能在debug环境下测试
 
楼上的方法编译后运行出错!
 
!!!!不能在debug环境下测试&nbsp;<br>找到编译后的*.exe文件直接运行就不会报错了
 
是的&nbsp;不要F9运行,那个是调试模式&nbsp;,默认设置的话&nbsp;还是会提示异常。<br><br>在文件夹中直接运行&nbsp;EXE。<br><br>ANiDelphi大哥水平高,还很耐心。
 
OnKeyPress里写<br>begin<br>&nbsp;&nbsp;if&nbsp;(not&nbsp;(Key&nbsp;in&nbsp;['0'..'9',#8]))&nbsp;or&nbsp;(StrToInt(TEdit(Sender).Text)&gt;=65535)&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Key:=#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;Beep();<br>&nbsp;&nbsp;end;<br>end;&nbsp;&nbsp;<br>#8是键盘上的退格键.楼主运行出错,报什么错?贴出来看看吧.<br>PS:ANiDelphi的方法也很好
 
找找那些扫描的国外代码&nbsp;看看人家用什么控件或者怎么处理&nbsp;前些日子我翻过这样的代码&nbsp;有一扫描端口的&nbsp;就有IP限制和端口限制&nbsp;65535是端口的极限
 
if&nbsp;(not&nbsp;(Key&nbsp;in&nbsp;['0'..'9',#8]))and((strtoint(edit1.text)&lt;0)or(strtoint(edit1.text)&gt;65536))then<br><br>showmessage('输入错误,请输入0-65536之间的整数');
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部