2017-02-11 7 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、ジェネリックダイナミックアレイには、リラックスタイプの識別ルールがあります。 [Tの配列の代わりにTArray を使用する理由は何ですか?](http://stackoverflow.com/q/14383093/576719)を参照してください。 –

答えて

7

使用SetLengthNはあなたが割り当てたい配列の長さである

SetLength(IntA, N); 

。動的配列変数の

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

はsetLengthは、所与の長さSで参照される配列を再割り当て。配列内の既存の要素は保存され、新しく割り当てられた領域は0またはnilに設定されます。多次元動的配列の場合、SetLengthは1次元以上のパラメータを取ることがあります(配列次元数まで)。

+0

これは完璧に機能しました - ありがとうございます。 –

関連する問題