如何检查变量是否为整数?

时间:2014-06-09 12:19:01

标签: inno-setup pascalscript

我正在使用Inno Setup,并且想要检查Pascal脚本,如果字符串变量是整数(仅0-9,没有十六进制)。我做了这个功能:

function IsInt(s: string): boolean;
var
  i, len: Integer;
begin
  len := length(s);

  if len = 0 then
    result := false
  else
  begin
    result := true;
    for i := 1 to len do
    begin
      if not (s[i] in ['0'..'9']) then  !!! ERROR HERE !!!
      begin
        result := false;
        exit;
      end;
    end;
  end;
end; 

但是编译器引发了一个错误:

Closing square bracket (']') expected.

如何解决?

如果我将行更改为:

  if not (s[i] in ['0','1','2','3','4','5','6','7','8','9']) then

它符合但如果代码被执行则会出现此错误:

Runtime Error - Invalid Type.

怎么办?

2 个答案:

答案 0 :(得分:3)

不是使用集合,而是可以进行简单的范围测试,例如

IF (s[i] < '0') OR (s[i] > '9') THEN
   ...

答案 1 :(得分:2)

来自Pascal脚本文档

  

原型:函数StrToIntDef(s:string; def:Longint):Longint;

     

描述:StrToInt函数转换在S中传递的字符串   变成一个数字。如果S不代表有效数字,则为StrToInt   返回Def。

中传递的数字

所以将def设置为-1,如果你的字符串不是数字,它将返回-1。

相关问题