我想请问各位高手:
如何判断一个edit里输入的是否为合法的数字,比如说55.5
我今天试了很多方法都不尽人意
我的意思是监测键盘看按下的键是否为数字或者是'.',当然第一个输入到edit里的不能是'.'或者是‘0’,如果不是合法的,则不能输入到edit内,输入完毕后我想把edit里的内容插到SQL SERVER某一张表内,这张表的相应字段类型为money型,在数字向money转化的时候出现错误,想请教这个问题怎么解决!
如何判断一个edit里输入的是否为合法的数字,比如说55.5
我今天试了很多方法都不尽人意
我的意思是监测键盘看按下的键是否为数字或者是'.',当然第一个输入到edit里的不能是'.'或者是‘0’,如果不是合法的,则不能输入到edit内,输入完毕后我想把edit里的内容插到SQL SERVER某一张表内,这张表的相应字段类型为money型,在数字向money转化的时候出现错误,想请教这个问题怎么解决!
begin
if not (key in ['0'..'9',vk_back]) then key:=#0;
end;
begin
if not (key in ['.','0'..'9',vk_back]) then key:=#0;
end;
begin
if not (key in ['.','0'..'9',vk_back]) then key:=#0;
if (key in ['.'])and length(edit,text)=1 then key:=#0;
end;
StrToFloatDef函数来测试一下即可
如:
if StrToFloatDef(Edit1.Text, -1) = -1 then
ShowMessage('非法数值');当然也可以在EditKeyPress中判断
不要注意负数时,双负号的情况
如:
-10.-12还有双点的情况
如:
10.1.0
procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
Key:=NumEditKey(key,Edit5.Text,2,True); //调用函数用来限制 输入为数字及一个小数点
end;//限制输入为合法数字和一个小数点的函数
function NumEditKey(cChar:Char;S:string;nXsws:Integer;nBhfh:Bool):Char;
Var
cCh: Char;
begin
If nXsws<0 then
nXsws:=0;
Result:=cChar;
If ((Result>='0') and (Result<='9')) or (Result='.') or (Result=Chr(8)) or (Result='+') or (Result='-') then
begin
If (Result='.') and (Pos('.',S)>0) then
Result:=cCh;
If (Pos('.',s)>0) and (Length(s)>=Pos('.',S)+nXsws) and (Result<>Chr(8)) then
Result:=cCh;
If ((Result='+') or (Result='-')) and ((Pos('+',S)>0) or (Pos('-',S)>0)) then
Result:=cCh;
If ((Result='+') or (Result='-')) and (Length(S)<>0) then
Result:=cCh;
If (Result='.') and (nXsws<=0) then
Result:=cCh;
If (nBhfh<>True) and ((Result='+') or (Result='-')) then
Result:=cCh;
end
Else
Result:=cCh;
end;