Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 如何检查变量是否为整数?_Inno Setup_Pascalscript - Fatal编程技术网

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

Inno setup 如何检查变量是否为整数?,inno-setup,pascalscript,Inno Setup,Pascalscript,我正在使用Inno安装程序,希望使用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 b

我正在使用Inno安装程序,希望使用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.

怎么做?

您可以只做一个简单的范围测试,而不是使用集合,例如

IF (s[i] < '0') OR (s[i] > '9') THEN
   ...
如果(s[i]<'0')或(s[i]>'9'),则
...

来自Pascal脚本文档

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

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


因此,将def设置为-1,如果字符串不是数字,它将返回-1。

谢谢,但这不是我需要的。只能接受0到9之间的数字作为整数。strotintdef也接受十六进制:strotintdef('1E',0)将给出30。无论如何,该函数对于其他用例是有用的。看起来您想检查
字符串
是否是
数字
,而不是
整数
。我说得对吗?因为当它传递十六进制数时,不需要返回True。