2016-05-31 16 views
2

lst_devices : TArray<String>変数を初期化するより良い方法をお探しです。Delphi - 文字列のTArrayを初期化するにはどうすればよいですか?

今日、私はこのようにしています(これは非常に醜いですが、それはコードのにおいですが、少なくとも問題なく動作します)。

lst_devices_id := ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']; 

どうすれば改善できますか?

答えて

7

文字列は、デフォルトで空文字列に初期化されています。だから、そのようにそれに頼ることができる:ここで

SetLength(lst_devices_id, N); 

あなたは、配列の要素のための所望の数を割り当てて、空の文字列にそれらを初期化するデフォルトにコンパイラに依存しています。これは、以前は初期化されていない配列に依存することに注意してください。そうでない場合は、最初にファイナライズする必要があります。

Finalize(lst_devices_id); 
SetLength(lst_devices_id, N); 
+0

"lst_devices_id:= nil;"ではありません。よりエレガントな、その後、Finalizeとして低レベルの機能を使用して? –

+2

@ZENsan Finalizeは、まったく同じことを行う組み込み関数です。これは、コードから使用することが期待されており、内部RTLコード用にのみ意図されていないという意味で、高水準な関数です。好きなのを選びな。 –

+0

ありがとうございます。それが私にはっきりさせるために求められる理由です。 –

関連する問題