2017-06-09 4 views
2

Ich versuche, eine CSV-Zeichenfolge zu teilen und dann durch das Array und ändern Sie diese Zeichenfolge, bevor Sie es wieder in eine Komma getrennte Zeichenfolge neu zu erstellen.Looping durch ein Array von Strings - Typ nicht übereinstimmen

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; 

Ich rufe die FormatHttpServer von anderswo. Ich kann das Skript jedoch nicht kompilieren, weil in der folgenden Zeile ein "Typenkonfliktfehler" auftritt und ich nicht verstehe warum. Es sollte ein Array von Strings mit der Zeichenfolge s durchlaufen.

for s in ARRAY1 do 

Antwort

2

Inno Setup Pascal Script unterstützt for ... in Syntax nicht.

Sie haben Indizes verwenden:

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

entdeckte ich eigentlich nur hatte, dass es mit Indizes ca. 5 Minuten gearbeitet hat, bevor Sie dieses gebucht, aber ich war definitiv nicht bewusst, warum die andere Art und Weise nicht funktionierte. Vielen Dank für Ihre Antwort! – dhockey