2012-04-16 2 views
6

Ich habe einige Probleme mit einem Array von Strings in const unter dem Codeabschnitt in Inno Setup definiert, ich habe folgend:Inno Setup: Wie definiert man ein Array in const?

[Code] 

const 
    listvar: array [0..4] of string = 
    ('one', 'two', 'three', 'four', 'five'); 

Es ist zu sagen ich ein = müssen, wo die : ist, aber dann kann ich Definiere es nicht als ein Array.

+3

AFAICT, hat Pascal Scripting des Inno Setup nicht-Arrays unterstützen. (Zumindest gibt es nichts in der Online-Dokumentation oder irgendeine Verwendung von Arrays in den Code-Beispielen, die ich finden könnte.) Was genau versuchen Sie zu tun, wo Sie denken, dass Sie ein konstantes Array benötigen? –

+0

Ich schätze, Sie müssten Ihre eigene Version von InnoSetup erstellen und diesen Typ selbst registrieren. @Ken, ich denke du behältst deine Antwort hier. Überprüfen Sie dies ['thread'] (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22738447.html). – TLama

+0

Gemäß dieser http://www.mirality.co.nz/inno/tips.php#arrays unterstützt Inno Setup Arrays, ich kann einfach nicht herausfinden, wie man es als const definiert. – user477276

Antwort

1

Ich habe vor kurzem eine kleine Utility-Funktion gemacht. Es wird Ihnen nicht erlauben, ein Array auf einer Konstante zuzuweisen, aber es könnte den Trick für eine Variable in einem einzigen Liner tun. Ich hoffe auf diese Hilfe.

Sie können es auf diese Weise verwenden:

listvar := Split('one,two,three,four,five', ','); 
// ============================================================================ 
// Split() 
// ---------------------------------------------------------------------------- 
// Split a string into an array using passed delimeter. 
// ============================================================================ 
Function Split(Expression: String; Separator: String): TArrayOfString; 
Var 
    i: Integer; 
    tmpArray : TArrayOfString; 
    curString : String; 

Begin 
    i := 0; 
    curString := Expression; 

    Repeat 
     SetArrayLength(tmpArray, i+1); 
     If Pos(Separator,curString) > 0 Then Begin 
      tmpArray[i] := Copy(curString, 1, Pos(Separator, curString)-1); 
      curString := Copy(curString, Pos(Separator,curString) + Length(Separator), Length(curString)); 
      i := i + 1; 
     End Else Begin 
      tmpArray[i] := curString; 
      curString := ''; 
     End; 
    Until Length(curString)=0; 

    Result:= tmpArray; 
End; 
Verwandte Themen