2012-04-16 17 views
6

Sto avendo alcuni problemi che definiscono un array di stringhe in const sotto la sezione di codice in Inno Setup, ho il seguente:Inno Setup: come definire una matrice in const?

[Code] 

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

Sta dicendo che ho bisogno di un = dove il : è, ma poi posso lo definisco come una matrice.

+3

AFAICT, di Inno Setup Pascal Scripting non supporta gli array. (Almeno non c'è nulla nei documenti on-line o qualsiasi uso di array negli esempi di codice che ho trovato.) Che cosa stai cercando di fare esattamente dove pensi di aver bisogno di un array costante? –

+0

La mia ipotesi è che dovresti creare la tua versione di InnoSetup e registrare questo tipo da solo. @ Ken, penso che potresti mantenere la tua risposta qui. Controlla questo ['thread'] (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22738447.html). – TLama

+0

In base a questo http://www.mirality.co.nz/inno/tips.php#arrays Inno Setup supporta gli array, non riesco a capire come definirlo come const. – user477276

risposta

1

Ho fatto una piccola funzione di utilità poco tempo fa. Non ti permetterà di assegnare un array su una costante, ma potrebbe fare il trucco per una variabile in un solo liner. Sperando in questo aiuto.

Si può usare in questo modo:

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; 
Problemi correlati