(100分delphi编程)edit中只允许输入大于零的整数怎么实现?

下面这段代码错在哪里?procedureTForm1.Edit1KeyPress(Sender:TObject;varKey:Char);beginif(not(keyi... 下面这段代码错在哪里?
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (not (key in ['0'..'9',#8])) or (strtoint(LeftStr(trim(edit1.text),1))<>0) then
key:=#8;
showmessage('请输入大于零的整数');
exit;
end;
谢谢大家的帮助
上面的代码有错误,现改成如下:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (not (key in ['0'..'9',#8])) or (LeftStr(edit1.text,1)='0') then
begin
key:=#8;
showmessage('请输入大于零的整数');
end;
end;

但是不知道为什么输入单独一个0的时候没有效果...
要求不允许为0.
展开
 我来答
kcxnvbdbd
2009-07-01 · TA获得超过523个赞
知道小有建树答主
回答量:885
采纳率:50%
帮助的人:619万
展开全部
LeftStr(edit1.text,1)='0'

改成 LeftStr(edit1.text + key,1)='0'

因为一开始是空的,判断的是你按键之前的edit的情况,所以出错,所以只要把按下的key给加上就OK了!
midasblesshj
2009-07-01 · TA获得超过127个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:180万
展开全部
语法上的毛病:
估计StrUtils 这个你没use
你少begin end来限制判断范围,最后那个exit没必要

逻辑上的毛病:
(strtoint(LeftStr(trim(edit1.text),1))<>0)运行的时候你一输入肯定报错,因为那时候edit1的内容还是空,你转整型就肯定报错

建议你这样做:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#13;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
try
if strtoint(trim(edit1.Text))<=0 then
showmessage('请输入大于零的整数');
except
showmessage('请输入正确的数字形式');
end;
end;
判断是不是大于0的整数放到EDIT退出的时候做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
perock
2009-07-01 · TA获得超过971个赞
知道小有建树答主
回答量:971
采纳率:50%
帮助的人:796万
展开全部
为什么要这么复杂,为何不用掩码来控制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式