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

时间:2015-09-23 14:09:25

标签: inno-setup pascalscript

Inno Setup create array from comma delimited strings stored in an array开始,我有一个二维(四列)数组RemoteDetailsLines,其中最后一列存储10,表明它是否是是否活跃。我想使用下面的数组中的值创建CheckListBox,这适用于创建和命名复选框,但我还希望在最后一列包含1的位置显示复选框。即使我使用RemoteDetailsLines[intIndex][3]循环并将StringChangeEx1值转换为0,使用下面代码中显示的True也无效和False,因为值是字符串。

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

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 个答案:

答案 0 :(得分:1)

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

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

比较运算符<>返回Boolean

更强大的解决方案是:

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

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