Freeについて

解決


message  2007-01-29 19:22:54  No: 24637

お世話になってます。

メソッドの”Free”をヘルプで調べてみたのですが、
”オブジェクトを破棄し、必要ならば関連付けられているメモリを開放します。”とあります。・・・つまりどういうことですか?


deldel  2007-01-29 19:29:33  No: 24638

ごく簡単にいえば、
「無かった状態に戻す」
ということです。


message  2007-01-29 20:25:04  No: 24639

ではですね、

procedure TForm1.Button1Click(Sender: TObject);
var
  list: TStringList;
  index: Integer;
  i: Integer;
begin
  list := TStringList.Create;

  list.Add('Hello');
  list.Add('hoge');
  list.Add('Good');
  list.Add('Delphi');

  list.Sort;
 
  if list.Find('hoge', index) then
    ShowMessage(IntToStr(index));

  for i := 0 to list.Count-1 do
    ListBox1.Items.Add(list.Strings[i]);

  list.Free;
end;

で、listの何がなかったことになったのですか?

あとですね、showmessageで、”3”と表示されたのですが、なぜ3なのかわかりません。listbox1に表示されたのは

Delphi
Good
Hello
hoge

でした。


stringlist  2007-01-29 21:28:51  No: 24640

Delphi[0]
Good[1]
Hello[2]
hoge[3]

[]内の数値はIndex

0から割り振られます。


deldel  2007-01-29 22:06:15  No: 24641

list.Free;
のあとには、list はもう存在しないということです。
showmessage(list[0]); などとすると怒られます。


message  2007-01-29 22:25:02  No: 24642

なるほど、そういうことですか。
ありがとうございました!
Freeにするタイミングを間違えないようにしないといけませんね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加