Inno setup Inno安装程序从存储在数组中的逗号分隔字符串创建数组

Inno setup Inno安装程序从存储在数组中的逗号分隔字符串创建数组,inno-setup,pascalscript,Inno Setup,Pascalscript,我需要从大量存储在数组中的逗号分隔字符串创建一个数组。包含逗号分隔字符串列表的主数组是RemoteSiteLines,可以包含任意数量的字符串条目,如1001、remotesite1、REM1,0、1002、remotesite2、REM2,1等。我需要将这些条目放入另一个数组RemoteSiteDetailsLines 我甚至很难知道从哪里开始,除非我弄错了,否则在Inno设置中没有内置函数来执行类似的操作。有人能建议一个执行此操作的过程吗?使用一个二维数组,如字符串数组 解析可以像下面这样完

我需要从大量存储在数组中的逗号分隔字符串创建一个数组。包含逗号分隔字符串列表的主数组是
RemoteSiteLines
,可以包含任意数量的字符串条目,如
1001、remotesite1、REM1,0
1002、remotesite2、REM2,1
等。我需要将这些条目放入另一个数组
RemoteSiteDetailsLines


我甚至很难知道从哪里开始,除非我弄错了,否则在Inno设置中没有内置函数来执行类似的操作。有人能建议一个执行此操作的过程吗?

使用一个二维数组,如
字符串数组

解析可以像下面这样完成。这不是最有效的代码,但它相对简单和简短

procedure ParseArray(行:字符串数组;变量标记:字符串数组数组);
变量
计数,索引,Index2,P:整数;
行:字符串;
开始
计数:=GetArrayLength(行);
{分配目标数组}
SetArrayLength(令牌、计数);
{迭代行}
对于索引:=0以计数-1 do
开始
行:=行[索引];
日志(格式('第[%d]行]:%s',[索引,第行]);
Index2:=0;
{循环直到消耗整行}
而第“”行
开始
{查找下一个分隔符}
P:=Pos(','行);
{重新分配数组以适应另一个令牌}
SetArrayLength(令牌[索引],Index2+1);
如果P>0,则
开始
{将令牌复制到目标数组}
令牌[Index][Index2]:=Copy(第1行,P-1);
{从字符串中删除标记和分隔符,}
{以便我们可以在下一次迭代中查找下一个标记}
删除(第1行,P);
结束
其他的
开始
令牌[Index][Index2]:=行;
{获取最后一个令牌,断开循环}
行:='';
结束;
日志(格式('Token[%d][%d]:%s',[Index,Index2,Tokens[Index][Index2]]);
公司(Index2),;
结束;
结束;
结束;
{用法示例}
过程初始化Wizard();
变量
RemoteSiteLines:字符串数组;
RemoteSiteDetailsLines:字符串数组的数组;
开始
设置阵列长度(RemoteSiteLines,3);
RemoteSiteLines[0]:=“1001,远程站点1,REM1,0”;
RemoteSiteLines[1]:='1002,远程站点2,REM2,0';
RemoteSiteLines[2]:=“1003,远程站点3,REM3,0”;
ParseArray(RemoteSiteLines、RemoteSiteDetailsLines);
结束;
结果如下:

Line[0]: 1001,Remote Site 1,REM1,0
Token[0][0]: 1001
Token[0][1]: Remote Site 1
Token[0][2]: REM1
Token[0][3]: 0
Line[1]: 1002,Remote Site 2,REM2,0
Token[1][0]: 1002
Token[1][1]: Remote Site 2
Token[1][2]: REM2
Token[1][3]: 0
Line[2]: 1003,Remote Site 3,REM3,0
Token[2][0]: 1003
Token[2][1]: Remote Site 3
Token[2][2]: REM3
Token[2][3]: 0