我正在使用 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
它可以编译,但如果执行代码,则会出现以下错误:
运行时错误 - 无效类型。
该怎么办?
您可以只进行简单的范围测试,而不是使用集合,例如
if (s[i] < '0') or (s[i] > '9') then
...
来自 Pascal 脚本文档
原型:函数
StrToIntDef(s: string; def: Longint): Longint;
说明:
函数将S中传入的字符串进行转换 变成一个数字。如果StrToInt
不代表有效数字,则S
返回传入的数字StrToInt
。Def
因此将
def
设置为 -1
,如果您的字符串不是数字,它将返回 -1
。