1、判断一个字符串是否为数字的函数为:IsNumeric(str);需要引用单元UCrpeUtl.pas。楼上的方法也行。 ... procedure ... var sTemp:string; i:integer; begin sTemp := Trim(Edit1.Text); if sTemp = '' then Exit; if IsNumeric(sTemp) then //如果是数字则执行下面的操作 begin for i:=1 to Length(sTemp) do begin if (StrToInt(sTemp[i]) <1) or (StrToInt(sTemp[i]) >6) then begin ShowMessage('只能输入1-6之间的数字!'); if Edit1.Canfocus then Edit1.SetFocus; Exit; end; end; end; end
你的意思是输入的值是在1-6之间吗?那么将上面的代码改为: ... if IsNumeric(sTemp) then //如果是数字则执行下面的操作 begin if (StrToInt(sTemp) <1) or (StrToInt(sTemp) >6) then begin ShowMessage('只能输入1-6之间的数字!'); if Edit1.Canfocus then Edit1.SetFocus; Exit; end; end;
楼上废这力气干吗,判断是不是数字和判断是否在 1..6之间的工作是重复的 procedure ... var sTemp:string; i:integer; begin sTemp := Trim(Edit1.Text); if sTemp = '' then Exit; for i:=1 to Length(sTemp) do begin if not(sTemp[i] in ['1'..'6']) then begin ShowMessage('只能输入1-6之间的数字!'); break; end; end; end
这还不简单呀,你把它化为INT,判断它是不是大于6就行了
楼主没说明白,你直接说只能输入1~6就行了呗, 大家都以为你想限制输入的每位数都只能是1~6。那还费那么多事if not(StrToIntDef(Edit1.Text, 0) in [1..6]) then ShowMessage('输入错误!');
用转换异常
try
temp:=strtofloat(edit1.text);
except
showmessage('无效数字');
end;
你是说要求数字在1和6之间呢,
还是要求Edit里的数字是1---6之间的呢?
请把问题想好问清了。
不然让人无从答起
不知道我这样写冷血是否明白,也希望你能帮我解决这个问题,我刚开始学delphi,很多语法和控件都不会用, 还希望大家多多帮帮我。
...
procedure ...
var
sTemp:string;
i:integer;
begin
sTemp := Trim(Edit1.Text);
if sTemp = '' then Exit; if IsNumeric(sTemp) then //如果是数字则执行下面的操作
begin
for i:=1 to Length(sTemp) do
begin
if (StrToInt(sTemp[i]) <1) or (StrToInt(sTemp[i]) >6) then
begin
ShowMessage('只能输入1-6之间的数字!');
if Edit1.Canfocus then Edit1.SetFocus;
Exit;
end;
end;
end;
end
...
if IsNumeric(sTemp) then //如果是数字则执行下面的操作
begin
if (StrToInt(sTemp) <1) or (StrToInt(sTemp) >6) then
begin
ShowMessage('只能输入1-6之间的数字!');
if Edit1.Canfocus then Edit1.SetFocus;
Exit;
end;
end;
procedure ...
var
sTemp:string;
i:integer;
begin
sTemp := Trim(Edit1.Text);
if sTemp = '' then Exit; for i:=1 to Length(sTemp) do
begin
if not(sTemp[i] in ['1'..'6']) then
begin
ShowMessage('只能输入1-6之间的数字!');
break;
end;
end;
end
大家都以为你想限制输入的每位数都只能是1~6。那还费那么多事if not(StrToIntDef(Edit1.Text, 0) in [1..6]) then
ShowMessage('输入错误!');