2017-06-09 14 views
2

私は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 

答えて

2

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; 
+0

私は実際にちょうどあなたがこの投稿を約5分前に、それがインデックスを使用して働いていたが、他の方法が働いていなかった理由を、私は絶対に気づいていなかったことを発見しました。答えてくれてありがとう! – dhockey

関連する問題