Inno setup 如何检查变量是否为整数?
我正在使用Inno安装程序,希望使用Pascal脚本检查字符串变量是否为整数(仅限0-9,无十六进制)。我做了这个函数: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
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。