请问CB高手,这句dp语句怎么换成CB语句?

ffww 2010-07-26 04:50:22
ListView控年在删除item项时,Delphi是不自动释放这些数据的,所以在OnDeletion事件中添加了
procedure TForm1.ListView1Deletion(Sender: TObject; Item: TListItem);
begin
Dispose(Item.Data);
end;


这样就可以安全的释放掉Data的内存了。

怎么转换成CB语句啊
我现在是这么写的:item->data=NULL;
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Function_ShiLei 2010-08-01
  • 打赏
  • 举报
回复
Data其实就是个int来存放任意类型数据(void)的指针,不仅仅是TListItem\TTreeNode,像TList的Item也是如此,都需要自己去释放,其实可以从这些类派生一个类,在析构函数还有Clear()中释放内存。
zzbinfo 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccrun 的回复:]
引用 2 楼 zzbinfo 的回复:
据我所知不用这么操作,直接 ListView1->Items->Delete(0);就可以了


你的所知和应用也太窄了。
ListItem和TreeNode的Data是void *类型数据,一般应用中,经常是new一个对象,然后将指针赋给Data,程序结束时,CBuilder/Delphi不会主动释放这部分资源,所以需要遍历每个Data,将其转换……
[/Quote]一直虚心向您学习中。。。。。
ccrun.com 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzbinfo 的回复:]
据我所知不用这么操作,直接 ListView1->Items->Delete(0);就可以了
[/Quote]

你的所知和应用也太窄了。
ListItem和TreeNode的Data是void *类型数据,一般应用中,经常是new一个对象,然后将指针赋给Data,程序结束时,CBuilder/Delphi不会主动释放这部分资源,所以需要遍历每个Data,将其转换成当初设定的类型指针,然后Delete,至于节点本身,是不需要考虑手工释放的,它的Owner会负责。
CppFile 2010-07-26
  • 打赏
  • 举报
回复
你Data里面一般保存的都是指针,所以必须要转成对象,然后删除对象哦,比如

Class *a=(Class *)item->Data;
delete a;
zzbinfo 2010-07-26
  • 打赏
  • 举报
回复
据我所知不用这么操作,直接 ListView1->Items->Delete(0);就可以了
ccrun.com 2010-07-26
  • 打赏
  • 举报
回复
你的Item->Dat中存放的是什么类型的数据,如果是指针,需要强制转换成该类型的指针,然后delete

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧