我想请问各位高手:
 如何判断一个edit里输入的是否为合法的数字,比如说55.5
 我今天试了很多方法都不尽人意
  我的意思是监测键盘看按下的键是否为数字或者是'.',当然第一个输入到edit里的不能是'.'或者是‘0’,如果不是合法的,则不能输入到edit内,输入完毕后我想把edit里的内容插到SQL SERVER某一张表内,这张表的相应字段类型为money型,在数字向money转化的时候出现错误,想请教这个问题怎么解决!

解决方案 »

  1.   

    procedure Tfrm_hwwpdzb_wh.dedtGZWZKeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['0'..'9',vk_back])  then key:=#0;
    end;
      

  2.   

    procedure Tfrm_hwwpdzb_wh.dedtGZWZKeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['.','0'..'9',vk_back])  then key:=#0;
    end;
      

  3.   

    procedure Tfrm_hwwpdzb_wh.dedtGZWZKeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['.','0'..'9',vk_back])  then key:=#0;
    if (key in ['.'])and length(edit,text)=1  then key:=#0;
    end;
      

  4.   

    在Edit失去焦点的时候,用
    StrToFloatDef函数来测试一下即可
    如:
    if StrToFloatDef(Edit1.Text, -1) = -1 then
      ShowMessage('非法数值');当然也可以在EditKeyPress中判断
    不要注意负数时,双负号的情况
    如:
    -10.-12还有双点的情况
    如:
    10.1.0
      

  5.   

    //这个是输入框的KEYPRESS事件
    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;