2012-04-16 23 views
6

Mam pewne problemy określające tablicę ciągów w const sekcji kodu w Inno Setup, mam następujący:Inno Setup: Jak zdefiniować tablicę w const?

[Code] 

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

To mówiąc Potrzebuję = gdzie : jest, ale wtedy mogę Zdefiniuj go jako tablicę.

+3

AFAICT, Inno Setup Pascal skryptów nie obsługuje macierze. (Przynajmniej nie ma niczego w dokumentach on-line ani przy użyciu tablic w próbkach kodu, które mogłem znaleźć.) Co dokładnie próbujesz zrobić, gdy myślisz, że potrzebujesz stałej tablicy? –

+0

Zgaduję, że musiałbyś zbudować własną wersję InnoSetup i zarejestrować ten typ przez siebie. @ Ken, myślę, że możesz zachować swoją odpowiedź tutaj. Sprawdź to ['thread'] (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22738447.html). – TLama

+0

Według tego http://www.mirality.co.nz/inno/tips.php#arrays Inno Setup obsługuje tablice, po prostu nie mogę wymyślić, jak zdefiniować go jako const. – user477276

Odpowiedz

1

Zrobiłem małą funkcję użytkową jakiś czas temu. Nie pozwoli ci na przypisanie tablicy do stałej, ale może zdziałać sztuczkę w jednej linijce. Mając nadzieję na tę pomoc.

można użyć go w ten sposób:

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; 
Powiązane problemy