2012-04-16 27 views
6

我在定義字符串數組中const下Inno Setup的代碼段的一些問題,我有以下幾點:Inno Setup:如何在const中定義數組?

[Code] 

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

它說我需要一個=其中:是,後來我可以沒有把它定義爲一個數組。

+3

AFAICT,創新安裝的帕斯卡爾腳本不支持數組。 (至少在線文檔中沒有任何內容,或者我能找到的代碼示例中沒有任何數組的使用。)如果您認爲需要一個常量數組,您究竟想要做什麼? – 2012-04-16 16:22:37

+0

我的猜測是你將不得不建立你自己的InnoSetup版本並且自己註冊這個類型。 @Ken,我想你可以在這裏保留你的答案。檢查這個['thread'](http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22738447.html)。 – TLama 2012-04-16 16:22:47

+0

根據這個http://www.mirality.co.nz/inno/tips.php#arrays Inno Setup不支持數組,我只是不知道如何將其定義爲const。 – user477276 2012-04-16 16:31:38

回答

1

前一段時間我做了一點實用功能。它不會允許你在常量上分配一個數組,但它可以爲一個班輪中的變量做訣竅。希望這有助於。

你可以用這種方式:

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; 
相關問題