2017-02-11 72 views
2

如何在不創建/定義x整數的情況下創建一個x整數數組。這個例子將創建一個10整數陣列(預填充用零中的每個元素):如何簡化創建一個未填充的整數數組

var 
    IntArray : TArray<Integer>; 
begin 
    IntArray := TArray<Integer>.Create(0,0,0,0,0,0,0,0,0,0); 
end; 

因此,我創建一個整數數組,它是120個整數長,這開始顯得雜亂:

IntA := TArray<Integer>.Create(
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0); 

現在我需要創建一個9000整數的數組,我不需要(或者不想)預先填充9000個零的數組。

是否有一個命令,如:

IntA := TArray<Integer>.Array[0..9000]; //This doesn't work 

感謝。

+0

我只是想知道爲什麼要在這裏使用泛型? –

+1

您應該始終使用動態數組的通用形式,因爲它提供了與其他通用代碼的兼容性。例外是,如果你必須支持沒有泛型的舊版編譯器。 –

+2

@AntonDuzenko,泛型動態數組放寬了類型標識規則。參見[使用TArray 而不是Array of T?]的原因是什麼(http://stackoverflow.com/q/14383093/576719)。 –

回答

7

使用SetLength

SetLength(IntA, N); 

其中N是您要分配的數組的長度。

procedure SetLength(var S: <string or dynamic array>; NewLength: Integer); 

對於動態數組變量,SetLength再分配s引用到給定長度的陣列。數組中的現有元素被保留,新分配的空間被設置爲0或nil。對於多維動態數組,SetLength可能需要多個長度參數(直到數組維數)。

+0

完美的工作 - 非常感謝你。 –

相關問題