在TlistItem中用Data属性保存数据的问题

lwjwj1314 2005-09-07 12:29:45
先定义一个结构:
TBedID =class(TObject)
public
bedid:integer;
end;
PBedID = ^TBedID;
然后在一个过程中:
var
objBedID:TBedID;
begin
while …… do
begin
tl := bedview.Items.Add;
tl.Caption :='…';
objBedId:=TBedID.Create;
objBedId.bedid:= bedid;
tl.Data:=@p_bedid;
end;
end;
在另一函数中访问:
selected:=PBedID(bedview.Items.Item[bedview.ItemIndex].Data).bedid;
结果是个随机的整数。

请问,如何解决?

顺便问一下,像第一函数中objBedId申请的堆空间如何释放?
...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwjwj1314 2005-09-07
  • 打赏
  • 举报
回复
up
lwjwj1314 2005-09-07
  • 打赏
  • 举报
回复
多谢。
我想请问一下,这个对象所申请的堆空间该如何回收呢?
ahjoe 2005-09-07
  • 打赏
  • 举报
回复
注释写错了

objBedID: TBedID;//这里将PBedID改为TBedID
ahjoe 2005-09-07
  • 打赏
  • 举报
回复
TBedID本身已经是一个指针了,不需要再用PBedID

改:

TBedID =class(TObject)
public
bedid:integer;
end;
然后在一个过程中:
var
objBedID: TBedID;//这里将TBedID改为PBedID
begin
while …… do
begin
tl := bedview.Items.Add;
tl.Caption :='…';
objBedId:=TBedID.Create;
objBedId.bedid:= bedid;
tl.Data:=objBedId;//这里将p_bedid改为objBedId
end;
end;
在另一函数中访问:
selected:=TBedID(bedview.Items.Item[bedview.ItemIndex].Data).bedid;
结果是个随机的整数。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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