よろしくお願いします。
お気に入りの作成に挑戦しています。環境はDelphi6 Personalです。
TreeViewにお気に入りの追加をして、要素をクリックすると
WebBrowserに表示させる予定です。
http://www.fhimagine.sakura.ne.jp/delphi/pointer.htm#data
を参考にして始めましたがノードの制作時のメモリーを
プログラムの終了時に破棄するにはどうしたらいいのでしょうか。
このままでは、メモリーリークを起こしています。
よろしくお願いします。
type
PFavData = ^TFavData; //TFavDataのポインタ型
TFavData = record
URL: string; //お気に入りのURL
FavTitle: string; //URLのタイトル名
end;
procedure TForm1.FormCreate(Sender: TObject);
var
pFav: PFavData; //ポインタ型を宣言
Node:TTreeNode;
begin
New(pFav);
pFav^.URL := 'Folder';
Node:=TreeView1.Items.AddObjectFirst(TreeView1.Selected, 'お気に入り', pFav);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
pFav: PFavData; //ポインタ型を宣言
Title:string;
begin
New(pFav); //メモリ領域を確保
pFav^.URL := 'http://www.yahoo.co.jp/';
Title := 'ヤフー';
TreeView1.Items.AddChildObject(TreeView1.Selected, Title, pFav);
New(pFav); //メモリ領域を確保
pFav^.URL := 'http://www.codegear.com/jp/';
Title := 'コードギヤー';
TreeView1.Items.AddChildObject(TreeView1.Selected, Title, pFav);
end;
procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Node:TTreeNode;
begin
Node := TTreeView(Sender).GetNodeAt(X,Y);
Label1.Caption := PFavData(Node.Data)^.URL;
end;
//削除ボタン
procedure TForm1.Button2Click(Sender: TObject); //削除ボタン
var Node:TTreeNode;
begin
Node := TreeView1.Selected;
Node.Delete;
end;
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
Dispose(Node.Data);
end;
こうかな
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
PFavData(Node.Data).URL := '';
PFavData(Node.Data).FavTitle := '';
Dispose(Node.Data);
end;
KHE00221さん、有り難うございました。
見事にメモリーをクリアーしてくれます。
だいぶ悩んでいました。
有り難うございました。
解決マークを忘れました。
自己レスです。すみません。
ツイート | ![]() |