2012-04-16 30 views
6

Tôi đang gặp một số vấn đề xác định một loạt các chuỗi trong const dưới phần mã trong Inno Setup, tôi đã điều sau đây:Cài đặt Inno: Cách xác định mảng trong const?

[Code] 

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

Nó nói rằng tôi cần một = nơi : là, nhưng sau đó tôi có thể không định nghĩa nó như là một mảng.

+3

AFAICT, Pascal Scripting Inno Setup không hỗ trợ mảng. (Ít nhất là không có gì trong các tài liệu trực tuyến hoặc sử dụng bất kỳ mảng nào trong các mẫu mã mà tôi có thể tìm thấy.) Chính xác thì bạn đang cố gắng làm gì khi bạn nghĩ rằng bạn cần một mảng liên tục? –

+0

Tôi đoán là bạn sẽ phải xây dựng phiên bản InnoSetup của riêng bạn và tự mình đăng ký loại này. @Ken, tôi nghĩ rằng bạn có thể giữ câu trả lời của bạn ở đây. Kiểm tra ['thread'] (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22738447.html). – TLama

+0

Theo http://www.mirality.co.nz/inno/tips.php#arrays Inno Setup này không hỗ trợ mảng, tôi không thể tìm ra cách xác định nó như là một const. – user477276

Trả lời

1

Tôi đã thực hiện một chức năng tiện ích nhỏ một chút trước đây. Nó sẽ không cho phép bạn gán một mảng trên một hằng số nhưng nó có thể thực hiện thủ thuật cho một biến trong một lớp lót. Hy vọng điều này giúp đỡ.

Bạn có thể sử dụng nó theo cách này:

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; 
Các vấn đề liên quan