我原来用的:
function IsNumber(s:string):boolean;
begin
Result:=true;
try
StrToInt(s);
except
Result:=false;
end;
end;
可是这样就有点麻烦,每次如果有异常产生就要进入调试模式。很是麻烦~~~~
可是查了查帮助,类似的仅仅有 IsNumeric ,但是参数仅仅接受char的~~~怎么办?我需要一个可以判断是否为16进制和10进制的数字的函数~~
function IsNumber(s:string):boolean;
begin
Result:=true;
try
StrToInt(s);
except
Result:=false;
end;
end;
可是这样就有点麻烦,每次如果有异常产生就要进入调试模式。很是麻烦~~~~
可是查了查帮助,类似的仅仅有 IsNumeric ,但是参数仅仅接受char的~~~怎么办?我需要一个可以判断是否为16进制和10进制的数字的函数~~
有一不太可靠的方法
定义一字符串
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;
begin
result := strtofloatdef(s, 0) = strtofloatdef(s, 1);
end;
在帮助文件里面没有找到这个函数啊~~~~会不会抛出异常???如果实在是不行,那还是自己动手写一个算了
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;