我原来用的:
function IsNumber(s:string):boolean;
begin
    Result:=true;
    try
    StrToInt(s);
    except
    Result:=false;
    end;
end;
可是这样就有点麻烦,每次如果有异常产生就要进入调试模式。很是麻烦~~~~
可是查了查帮助,类似的仅仅有 IsNumeric ,但是参数仅仅接受char的~~~怎么办?我需要一个可以判断是否为16进制和10进制的数字的函数~~

解决方案 »

  1.   

    好像没有好方法。
    有一不太可靠的方法
    定义一字符串
    const aa='0123456789.'
    i,j:integer;
    begin
    result:=false;
    for i:=1 to length(s) do
    begin
      if pos(s[i],aa)=0 then
        exit; 
    end;
    result:=true;
    end;
      

  2.   

    function IsNumber(s:string):boolean;
    begin
      result := strtofloatdef(s, 0) = strtofloatdef(s, 1);
    end;
      

  3.   

    strtofloatdef
    在帮助文件里面没有找到这个函数啊~~~~会不会抛出异常???如果实在是不行,那还是自己动手写一个算了
      

  4.   

    算了,节贴。自己写了一个
    function IsNumber(s:string):boolean;
    var i:integer;sTmp:string;
    const
        PATTERN_10=('0123456789');
        PATTERN_16='0123456789ABCDEF';
    begin
        sTmp:=UpperCase(Trim(s));
        if sTMp='' then begin Result:=false;exit;end;
        Result:=true;
        If sTmp[1]<>'$' then
        begin
            For i:=1 to Length(sTmp) do
                If Pos(sTmp[i],PATTERN_10)=0 then begin Result:=False;exit;end;
        end    else
            For i:=1 to Length(sTmp) do
                If Pos(sTmp[i],PATTERN_16)=0 then begin Result:=False;exit;end;
    end;