1

継承された一部のレガシー コードで、初期化されていないデータ構造への出力にランダムなガベージが表示される問題を追跡しました。次のように定義されています。

MyArray: array of array of ShortString;

この構造から値を読み取ると、明らかに悪い場所から来ており、実行するたびに変化するジャンクを取得することがあります。

これがこの配列を初期化する正しい方法だと思いました:

FillChar (MyArray, SizeOf (MyArray), 0)

しかし、いろいろなサイトを読んでいくうちに、自分に疑問を持つようになりました。それは、この配列を初期化するための最良/正しい方法ですか? 0 が正しい FillValue ですか、それとも #32 である必要がありますか?

4

2 に答える 2

2

サイズが指定されていないため、これは動的配列です。Fillchar は、それらを初期化する正しい方法ではありません。それらはマネージド型であるため、自動的に初期化されます。後で配列を空にしたい場合は、SetLength(MyArray,0)または単に使用できますMyArray := nil

于 2012-08-10T16:11:56.780 に答える
-2

Afaik ショートストリングは自動初期化されません。したがって、長さを適切なサイズに設定します。

setlength(myarray,10,12);

次に、すべての文字列の長さを 0 に設定します。

for i:=0 to length(myarray)-1 do
  for j:=0 to length(myarray[i])-1
      setlength(myarray[i][j],0);
于 2012-08-10T17:23:41.313 に答える