配列の初期化

解決


さばたん  2003-01-27 11:02:18  No: 2680  IP: 192.*.*.*

こんにちは。

(先日の「配列変数に格納」の続きなのですが)
Formを閉じる際に、配列を初期化させたく

{type - Public宣言部}で、
  ArrDelStr: array of String;

procedure TForm1.MyPro(var TestCode: AnsiString);
begin
  SetLength(ArrDelStr,length(ArrDelStr)+1);
  ArrDelStr[high(ArrDelStr)] := TestCode;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SetLength(ArrDelStr,0);
end;

と、してみました。
これではただ配列の長さを0にしているだけなので
明示的にメモリの開放などを行うべきでしょうか?
また、ヘルプを見てみたのですが、
GetMem・FreeMem・Initialize などを使うのが適切でしょうか?

お分かりの方いらっしゃいましたら、よろしくお願いします。

編集 削除
にしの  2003-01-27 12:53:42  No: 2681  IP: 192.*.*.*

たぶん、だいじょうぶでしょう。
配列の長さを0に変えても、前に確保したメモリは解放されませんから。
# 配列としての上限は変わります

メモリの解放が必要かどうかは、処理内容によってかわります。
たいていは気にしなくていいと思います。
確保できなくなれば、例外が発生するだけですし。

編集 削除
さばたん  2003-01-27 16:53:41  No: 2682  IP: 192.*.*.*

わかりました!

にしのさん、ありがとうございました。

編集 削除