try
  strtofloat(edit1.text);
except
  showmessage('出错,不是数字');
  exit;
end;showmessage('数字');

解决方案 »

  1.   

    自己写个函数,用Try
    function IsDigit(str: String):Boolean;
    var ff: Real;
    begin
      try
        ff := StrToFloat(str);
        Result := True;
      except
        Result := False;
      end;
    end;
      

  2.   

    function CheckNumber(strParam1: string): boolean;
    //  判斷字符串strParam1是否數字型字符串(包含小數點'.'),
    //  返回邏輯結果True,False
    var
      i, j : integer;
    begin
      checknumber := True;
      J := 0;
      for i := 1 to length(strParam1) do
      begin
        case strParam1[i] of
          '0'..'9':;
          '.': inc(J);
          else checknumber := False;
        end;
      end;
      if J>1 then checknumber := False;
    end;
      

  3.   

    其实我是这么操作的.在edit的输入事件change里面,
    var tmpst:string;
    tmpint:integer;
    begin
    tmpdtr:='';
    for tmpint:=1 to length(edit1.text)do
       begin
          if ((edit1.text[tmpint]>'1') and (edit1.text[tmpint]<'9'))or(edit1.text[tmpint]='.') then
             tmpstr:=tmpstr+edit1.text[tmpint];
       end;
       edit1.text:=tmpstr;
    end
    可以保证输入的都是数字(可以输入小数点意味着可以是float型).
      

  4.   

    其他非法字符不能输入!既然保证输入时是合法的数字.就不用考虑能不能转化为数字的问题了!
    sorry!上面那个tmpstr:='';
    应该是tmpstr:='0';
      

  5.   

    强力推荐用val过程,功能很强,具体用法看看Delphi的帮助。
      

  6.   

    trystrtoint
    trystrtofloat
    ..........
      

  7.   

    我就用的val,很方便
    看看Delphi的帮助