如何在 Inno Setup 中检查字符串是否为数字

问题描述 投票:0回答:2

我正在使用 Inno Setup,并想使用 Pascal Script 检查字符串变量是否为整数(仅限 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; 

但是编译器会抛出错误:

需要结束方括号 (']')。

如何解决?

如果我将行更改为:

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

它可以编译,但如果执行代码,则会出现以下错误:

运行时错误 - 无效类型。

该怎么办?

inno-setup pascalscript
2个回答
5
投票

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

if (s[i] < '0') or (s[i] > '9') then
   ...

2
投票

来自 Pascal 脚本文档

原型:函数

StrToIntDef(s: string; def: Longint): Longint;

说明:

StrToInt
函数将S中传入的字符串进行转换 变成一个数字。如果
S
不代表有效数字,则
StrToInt
返回传入的数字
Def

因此将

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

© www.soinside.com 2019 - 2024. All rights reserved.