お世話になってます。
メソッドの”Free”をヘルプで調べてみたのですが、
”オブジェクトを破棄し、必要ならば関連付けられているメモリを開放します。”とあります。・・・つまりどういうことですか?
ごく簡単にいえば、
「無かった状態に戻す」
ということです。
ではですね、
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
でした。
Delphi[0]
Good[1]
Hello[2]
hoge[3]
[]内の数値はIndex
0から割り振られます。
list.Free;
のあとには、list はもう存在しないということです。
showmessage(list[0]); などとすると怒られます。
なるほど、そういうことですか。
ありがとうございました!
Freeにするタイミングを間違えないようにしないといけませんね。
ツイート | ![]() |