关于 pascalscript:Inno Setup 将数组中的字符串转换为布尔值

Inno Setup convert string in array to boolean

从 Inno Setup 开始,从存储在数组中的逗号分隔字符串创建数组,我有一个二维(四列)数组 RemoteDetailsLines,其中最后一列存储一个 10 指示它是否是否活跃。我想使用数组中的值创建一个 CheckListBox,如下所示,它可以很好地创建和命名复选框,但我也希望在最后一列包含 1 的位置选中该框。在下面的代码中使用 RemoteDetailsLines[intIndex][3] 不起作用,即使我使用 StringChangeEx 循环并将 10 值转换为 TrueFalse,因为这些值是字符串.

因此,问题是如何将这些值转换为 AddCheckBox 函数所期望的 Boolean?我什至不确定数组是否可以是字符串值以外的任何东西?

1
2
3
4
5
6
7
8
9
10
11
12
13
CheckListBox := TNewCheckListBox.Create(SelectRemotesPage);
with CheckListBox do
  begin      
    Parent := SelectRemotesPage.Surface;          
    Left := ScaleX(0);
    Top := ScaleY(50);
    Width := ScaleX(250);
    Height := ScaleY(153);
    for intIndex := 0 to intNumberRemotes - 1 do
      begin
        AddCheckBox(RemoteDetailsLines[intIndex][1], RemoteDetailsLines[intIndex][2], 0, RemoteDetailsLines[intIndex][3], True, False, False, Nil);
      end;
  end;

对于这个简单的情况,使用:

1
AddCheckBox(..., (RemoteDetailsLines[intIndex][3] <> '0'), ...);

比较运算符 <> 返回 Boolean.

更健壮的解决方案是:

1
AddCheckBox(..., (StrToIntDef(RemoteDetailsLines[intIndex][3], 0) <> 0), ...);

将字符串转换为 Integer 并回退到 0,然后将整数与 0 进行比较。