Delphi帮助中有下面的Example:
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)
elseif (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr); end;
end;//New(MyRecPtr);这句创建了指针,然后赋给TreeNode.Data,之后我们可以如下使用这个数据:
procedure TForm1.Button2Click(Sender: TObject);begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;~~~~~~~~~~~~
请问:程序结束的时候是否需要遍历TreeView的节点释放掉这个Data指向的数据呢?
还是Delphi会自己释放它?为什么?
担心会有内存泄漏所以问问大家? 100分敬上。
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)
elseif (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr); end;
end;//New(MyRecPtr);这句创建了指针,然后赋给TreeNode.Data,之后我们可以如下使用这个数据:
procedure TForm1.Button2Click(Sender: TObject);begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;~~~~~~~~~~~~
请问:程序结束的时候是否需要遍历TreeView的节点释放掉这个Data指向的数据呢?
还是Delphi会自己释放它?为什么?
担心会有内存泄漏所以问问大家? 100分敬上。
解决方案 »
- 鼠标钩子 双击问题
- SQL的update问题
- 走进 Borland公司,TNND,简直就是国家级的森林公园,爽呀!!!!!!看这里图片!!
- Query查询的简单问题,急!急!急!在线等待
- DCOM问题,100分求解
- 如何只打印DBGrid选择的部分
- 请问在有SaveDialog保存文件的时候能不能指定编码形式?unicode??
- 在2000下编译的程序在98上运行时,窗口变的很大,而且窗口上的控件也都变大了。
- delphi 里怎样主动关闭已创建的线程?
- DateTimepicker中的文本框字体颜色的改变?
- 请问如何改变DBGrid中的某一个单元格的字体颜色?知道者请进,不知道者请帮忙UP,参与者都有分!!!
- 本想让它ping一次,label就显示一个结果出来,可是它直到循环执行完了才一次把所有结果显示出来,不知应该怎么做!
必须自己释放,
遍历节点,然后FreeMemory(TreeNodes.item[i].Data);
CSDN,哎……flyhigh:20
blueshu:10剩下的分,谁灌我这片帖子的水,给谁5分,哼哼。
这和TStringGrid的Objects数组一样,在运行时将某一对象与某一单元格相关时,在TStringGrid被释放之前,这些对象必须被释放,否则就有可能造成对象失去指针引用,造成对象长时间滞留内存