【问题标题】:Looping through an array of strings - Type mismatch循环遍历字符串数组 - 类型不匹配
【发布时间】:2017-06-09 14:43:14
【问题描述】:

我正在尝试拆分一个 csv 字符串,然后循环遍历数组并更改这些字符串,然后再次将其重新构建为逗号分隔的字符串。

function StrSplit(Text: String; Separator: String): Array of String;
var
  i, p: Integer;
  Dest: Array of String; 
begin
  i := 0;
  repeat
    SetArrayLength(Dest, i+1);
    p := Pos(Separator,Text);
    if p > 0 then begin
      Dest[i] := Copy(Text, 1, p-1);
      Text := Copy(Text, p + Length(Separator), Length(Text));
      i := i + 1;
    end else begin
      Dest[i] := Text;
      Text := '';
    end;
  until Length(Text)=0;
  Result := Dest
end;

function FormatHttpServer(Param: String): String;
var 
build: string;
s: string;
ARRAY1: Array of String;
begin
  ARRAY1 := StrSplit(param, ',');
  build:='';
  for s in ARRAY1 do
  begin
    build := build + DoSomething(C);
  end;
end;

我从其他地方拨打FormatHttpServer。我无法编译脚本,因为在下一行我得到一个“类型不匹配错误”,我不明白为什么。它应该使用字符串 s 循环遍历一个字符串数组。

for s in ARRAY1 do

【问题讨论】:

    标签: inno-setup pascalscript


    【解决方案1】:

    Inno Setup Pascal Script 不支持for ... in 语法。

    你必须使用索引:

    var
      I: Integer;
      A: array of string;
      S: string;
    begin
      A := { ... };
      for I := 0 to GetArrayLength(A) - 1 do
      begin
        S := A[I];
        { Do something with S }
      end;
    end;
    

    【讨论】:

    • 实际上,在您发布此内容之前大约 5 分钟,我才发现它使用索引可以工作,但我绝对不知道为什么另一种方式不起作用。非常感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2017-10-06
    • 1970-01-01
    • 2017-02-12
    • 2022-01-16
    • 2019-09-07
    相关资源
    最近更新 更多