2017-02-11 1 views
2

Wie erstelle ich ein Array von X Ganzzahlen, ohne die x Ganzzahlen zu erstellen/definieren. In diesem Beispiel wird eine 10 Ganzzahl-Array (pre-bevölkerten mit Nullen in jedem Element) anlegen:So vereinfachen Sie das Erstellen eines unbestückten Arrays von Ganzzahlen

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

So habe ich eine Reihe von ganzen Zahlen, die 120 ganzen Zahlen lang ist, die gestartet unordentlich aussehen:

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); 

Und jetzt muss ich ein Array von 9000 Ganzzahlen erstellen, und ich brauche nicht (oder wollen) das Array mit 9000 Nullen vorzufüllen.

Gibt es einen Befehl wie:

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

Dank.

+0

Ich frage mich nur, warum Generika hier verwenden? –

+1

Sie sollten immer die generische Form des dynamischen Arrays verwenden, da diese Kompatibilität mit anderem generischen Code bietet. Eine Ausnahme ist, wenn Sie ältere Compiler ohne Generika unterstützen müssen. –

+2

@AntonDuzenko, generische dynamische Arrays hat Typ Identity-Regeln entspannt. Siehe [Was sind die Gründe, TArray anstelle von Array von T zu verwenden?] (Http://stackoverflow.com/q/14383093/576719). –

Antwort

7

Verwendung SetLength:

SetLength(IntA, N); 

wo N die Länge des Arrays ist, dass Sie möchten zuzuordnen.

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

Für eine dynamische Feldvariable, SetLength ordnet das Array von S zu der gegebenen Länge verwiesen. Vorhandene Elemente im Array werden beibehalten und der neu zugewiesene Speicherplatz wird auf 0 oder null gesetzt. Bei mehrdimensionalen dynamischen Arrays kann SetLength mehr als einen Längenparameter haben (bis zur Anzahl der Array-Dimensionen).

+0

Das hat perfekt funktioniert - vielen Dank. –

Verwandte Themen