掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Disposeは必要ないんですか? (ID:12506)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TTreeNode.Dataの使い方がよく分からず、Helpを引いてみたら、以下の様な例が載っていました ----------------------------------------------------- type PMyRec = ^TMyRec; TMyRec = record FName: string; LName: string; end; 以下のコードは,TreeView1 の最後にノードを追加します。TMyRec レコードは追加された項目に結び付いています。Fname および Lname フィールドは,編集ボックス Edit1 および Edit2 から取得されます。インデックスパラメータは,編集ボックス Edit3 から取得されます。項目が追加されるのは,インデックスが有効な場合に限られます。 procedure TForm1.Button1Click(Sender: TObject); var MyRecPtr: PMyRec; TreeViewIndex: LongInt; begin New(MyRecPtr); MyRecPtr^.FName := Edit1.Text; MyRecPtr^.LName := Edit2.Text; TreeViewIndex := StrToInt(Edit3.Text); with TreeView1 do begin if Items.Count = 0 then Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr) else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr); end; end; procedure TForm1.Button2Click(Sender: TObject); begin Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' + PMyRec(TreeView1.Selected.Data)^.LName; end; ----------------------------------------------------- この例でよく分からないのですが、Button1Click()で、New(MyRecPtr)でポインタを設定していますが、Newを用いる際は、Dispose()で割当てていたメモリを解放しなければなりませんとNew()には書いてありました。けど、例にはこれしかのっていないのでDisposeが発行されているのかよく分かりません。 Dispose()は必要なのですか?また、必要なら、どのタイミングでどの様に使えばいいのでしょうか? あまりポインタとかを分かってないので、なるべく易しくお教え頂けると嬉しいです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.