如题,有这样的函数吗?判断一个字符串是不是只由数字组成的?

解决方案 »

  1.   

    function IsNum(str: string): Boolean;
    var
      i: Integer;
    begin
      Result := True;
      for i := 1 to Length(str) do
        if not (str[i] in ['0'..'9']) then
        begin
          Result := False;
          Break;
        end;
    end;
      

  2.   

    下面是Delphi中标准函数StrToInt的源代码,其中用到System单元Val内部函数,判定字符串是否整数最简单直接而且不会产生异常。
    function StrToInt(const S: string): Integer;
    var
      E: Integer;
    begin
      Val(S, Result, E);
      if E <> 0 then ConvertErrorFmt(@SInvalidInteger, [S]);
    end;
      

  3.   

    Sorry: 严格地说,Val是一个过程。
      

  4.   

    (*//
    标题:检查数字字符串
    说明:使用于运用程序检查用户数字输入
    设计:Zswang
    日期:2002-01-24
    支持:[email protected]
    //*)///////Begin Source
    function IsNumber(mStr: string): Boolean; { 返回字符串是否是正确的数字表达 }
    var
      I: Real;
      E: Integer;
    begin
      Val(mStr, I, E);
      Result := E = 0;
      E := Trunc(I);
    end; { IsNumber }function IsInteger(mStr: string): Boolean; { 返回字符串是否是正确的整数表达 }
    var
      I: Integer;
      E: Integer;
    begin
      Val(mStr, I, E);
      Result := E = 0;
      E := Trunc(I);
    end; { IsInteger }function IsHex(mStr: string): Boolean; { 返回字符串是否是正确的十六进制表达 }
    var
      I: Integer;
    begin
      Result := true;
      for I :=1 to Length(mStr) do
      begin
       //P := Copy(mStr,I,0);
       if Pos(Upcase(mStr[I]),'0123456789ABCDEF')>0 then
         Result :=Result and true
       else
         Result :=Result and false;
      end;
    end;
    ///////End Source///////Begin Demo
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      CheckBox1.Checked := IsNumber(Edit1.Text);
      CheckBox2.Checked := IsInteger(Edit1.Text);
    end;
    ///////End Demo
      

  5.   

    糟糕,这两种方法我都用不了。我用的不是纯正的 Delphi,是另一种在 Delphi 基础上做的东西。第一种方法在 if not(str[i] in ['0'..'9']) then 这句提示少一个 ) 。第二种方法提示不认识 Val。以上方法在 Delphi 里都是正确的,只可惜……惨惨,还有其他的方法吗?
      

  6.   

    我用的不是纯正的 Delphi,是另一种在 Delphi 基础上做的东西??别人做的一个系统?系统里可以自己加入脚本??!!!
      

  7.   

    function IsNum(str: string): Boolean;
    var
      i: Integer;
    begin
      Result := True;
      for i := 1 to Length(str) do
        if not (str[i] in ['0'..'9']) then
        begin
          Result := False;
          Break;
        end;
    end;
    这种写法非常好。如果其这的系统不支持这种写法。你改一下不就是了
      

  8.   

    回 shuixin13(犬犬(心帆)),没错,可以自己写脚本,并且除了 Delphi 外,也支持 Java,VB,Perl 等等的其他 Script,将来还支持 .net。其实大家应该听说过,是北京一家公司开发的软件。谢谢大家上面的帮忙,对 Delphi 来说我还是个生手,很多东西我都还不知道,在此表示衷心地感谢。上述语句我还是没法用,我忘了说了,我这儿的常数包含小数。再等会看看,晚上结帖:)
      

  9.   

    try
      i:=StrToInt(edit1.text);
    except
      i:=0;
    end; //;)
      

  10.   

    function IsNum(str: string): Boolean;
    var
      i: Integer;
    begin
      Result := True;
      for i := 1 to Length(str) do
        try 
          StrToInt(str[i]);
        except
          result := False;
          Break;
        end;
      end;
    end;
      

  11.   

    哈哈,谢谢 smilelhh(blue),我怎么想不到这种方法呢?:)把 StrToInt 改成 StrToFloat 就完美了,谢谢:)结帖。