try
      edit1.text:=floattostr(strToFolat(DateTime1_ed.text));
except
      application.messagebox('请正确输入数值,'提示',MB_OK+MB_ICONEXCLAMATION);
      exit;
end;

解决方案 »

  1.   

    try
          edit1.text:=floattostr(strToFolat(edit1.text));
    except
          application.messagebox('请正确输入数值,'提示',MB_OK+MB_ICONEXCLAMATION);
          exit;
    end;
      

  2.   

    zheng的一种方法是可行的,还有另外一种方法可以实现,你看看
    Delphi组件栏中Sample中的SpinEdit控件的源代码,中间有一段
    代码是你所要的。三少
      

  3.   

    用maskedit是最简单的。
    或在onkeypress中判断是不是在0到9之间
      

  4.   

    var
      I, Code: Integer;
    begin
      Val(I, Edit1.Text, Code);
      if Code <> 0 then ShowMessage('Error');
    end;
      

  5.   

    if texttofloat(edit1.text)=false then
    begin
    edit1.text:='';
    application.messagebox('你输入的不是数字','提示',mb_ok);
    end;或者在EDIT1的ONPRESS事件中输入
    if not key in['0'..'9'] then
    begin
    key=#0;
    application.messagebox('你输入的不是数字','提示',mb_ok);
    end;
      

  6.   

    我在edit1的keypress事件中写下如下代码
    if not key in['0'..'9'] then begin
    key:#0;
    showmessage('您输入的不是数字')
    end;报错在if not key in['0'..'9'] then begin
     类型不匹配!
      

  7.   

    if not key in['0'..'9'] then 
    begin
      key:=chr(0);
      showmessage('您输入的不是数字')
    end;
      

  8.   

    try
          strToFolat(edit1.text);
    except
          application.messagebox('请正确输入数值,'提示',MB_OK+MB_ICONEXCLAMATION);
          exit;
    end;
    还有就是你在调试时把debug的选项设置一下,这样就不会捕捉不到错误了。
    我觉得这是最好的方法。
      

  9.   

    liuchcn的方法是我在开发时常用的方法。
      

  10.   

    Cyril:上面的當然不對了,如下就對了!!在edit1的keypress事件中写下如下代码: if not (key in['0'..'9',#8]) then    //不能少括號及刪除鍵(backspace)呀!
    begin                                //否則輸入數錯誤如何修改   
      key:=#0;
    end;
      

  11.   

    捕捉错误的方法是可行的,但你不能在IDE环境下编译运行程序。
    而要单独运行程序。
      

  12.   

    其实如果strtoint不成功,就说明输入的不是数字
      

  13.   

    我也觉得可用Strtoint,我在工作中经常用这样的方法判断用户是否输入了合法的日期、数字型等。
      

  14.   

    运用异常是比较好的方法(我一直用它),就是调试的时候有一点麻烦,
    function StrIsNumber(NumStr : string) : boolean;
    begin
      result := true;
      try
        StrToInt(NumStr); 
      except        //触发 EConvertError
        result := false;
      end;
    end;【ePing】提到的TSpinEdit处理数字的原代码是指以下
    function TSpinEdit.IsValidChar(Key: Char): Boolean;
    begin
      Result := (Key in [DecimalSeparator, '+', '-', '0'..'9'])   //DecimalSeparator是小数分隔符,一般是'.'
               or  ((Key < #32) and (Key <> Chr(VK_RETURN)));
      if not FEditorEnabled and Result and ((Key >= #32) or
          (Key = Char(VK_BACK)) or (Key = Char(VK_DELETE))) then
        Result := False;
    end;procedure TSpinEdit.KeyPress(var Key: Char);
    begin
      if not IsValidChar(Key) then
      begin
        Key := #0;
        MessageBeep(0)
      end;
      if Key <> #0 then inherited KeyPress(Key);
    end;
    你可以参考一下,适当地修改一定能行!
    想偷懒的话,那就去用组件!
      

  15.   

    //zswang再次回答
    function ZsIsNumber(s: string): Boolean; { 返回是否是正确的数字符串 }
    var
      x: Extended;
      Code: Integer;
    begin
      Val(s, x, Code);
      Result := Code = 0;
      Code := Trunc(x); { 为消除编译中的Hint }
    end; { ZsIsNumber }//调用
    if not ZsIsNumber(Edit1.Text) then ShowMessage('你输入的不是数字');
    //to Cyril: 你真的都试了?
    //to Cyril: 你用的是Delphi吗?
    //to Cyril: 你能确定你输入的不是中文全角字母?
    //to Cyril: 我就不说这么多了
    //to Cyril: 最后一句
    //to Cyril: 真的就只说一句
    //to Cyril: 如果你看到的不是最后一句,也不能怪你
    //to Cyril: 我其实真的也只想说一句
    //to Cyril: 看来大家都有一点烦
    //to Cyril: 我还是少说一句的好
    //to Cyril: 试一下吧
    //to Cyril: 你能确定你真...........