Search code examples
inno-setuppascalscript

How to split a string in Inno Setup


How can I split a string in Inno Setup?
Is there any special function in Inno Setup to split the string?

I want to get the following from the string '11.2.0.16':

tokens: array of string = ('11', '0', '2', '16');

Thanks in advance!


Solution

  • I've been looking for the same thing today...

    This one works just fine on Inno Setup Scripts. Paste this excerpt inside your script before the procedure/function which will call this "split" procedure.

    You can also modify this onto a function, if you desire...

    procedure Explode(var Dest: TArrayOfString; Text: String; Separator: String);
    var
      i, p: Integer;
    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;
    end;
    
    procedure Whatever();
    var 
      str: String;
      strArray: TArrayOfString;
      i: Integer;
    begin
      Explode(strArray,str,'.');
      for i:=0 to GetArrayLength(strArray)-1 do begin
        { do something }
      end;
    end;
    

    Taken from here