C chenybin Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #21 var P : TPerson; begin P := TPerson(FPersonList.Items) I就是序号,你自己管理序号
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #22 我测试了,Tlist也只是管理指针呀,并没有管理实际的对象,当把值赋过去的时候,然后再释放原来的对象,那么它就不好用了,我要解决的正是这个问题
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #23 我现在想做的就是申请一个指针,然后能让这个指针申请一定的空间,然后把对象能复制到这个空间中去,那么什么问题都就解决了
C chenybin Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #24 唉……,我看我是说不清楚了, 我测试了,Tlist也只是管理指针呀,并没有管理实际的对象,当把值赋过去的时候,然后再释放原来的对象,那么它就不好用了,我要解决的正是这个问题 你赋什么值过去,释放对象当然就没有了,把你的代码贴出来,干活去了
唉……,我看我是说不清楚了, 我测试了,Tlist也只是管理指针呀,并没有管理实际的对象,当把值赋过去的时候,然后再释放原来的对象,那么它就不好用了,我要解决的正是这个问题 你赋什么值过去,释放对象当然就没有了,把你的代码贴出来,干活去了
C cyradg Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #25 TList可以管理对象,Tlist.Add(对象)即可,TPerson(FPersonList.Items).Free释放对象.
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #26 当我把一个对象付给Tlist后,然后我再把原来的对象释放,那么Tlist的那个对象也就不好用了亚,你有qq么,我的qq是41979259
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #27 Tlist管理的是一个指向那个对象的指针,而是不是对象本身,当赋完值之后,然后将原来的对象都是放了,那么Tlist的对象指针也就不好用了亚
C cyradg Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #28 Tlist放了一个后要调用TList.Delete删索引 ======================================= b :=TButton.Create.... Tlist.Add(b); b.Free;///不要该句,放了就玩完了.
Tlist放了一个后要调用TList.Delete删索引 ======================================= b :=TButton.Create.... Tlist.Add(b); b.Free;///不要该句,放了就玩完了.
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #29 就是呀,我也是这个问题,把原来的对象是放就完了,但是好像简单的对象可以,像tperson这样的对象,如果只有两个数性的还可以,如果有一个属性是一个类,好像就不行了
C cyradg Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #30 如果有一个属性是一个类?什么意思,对象未释放就可以操作呀。
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #31 TList stores an array of pointers,他是一个指针数组呀,指向的是对象的实际空间,如果负值以后,把他指向的那个对象free,那么它的指针就不好用了呀,怎么解决这个问题呢
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #32 我要是有100个对象,都不释放的话,我就根本用不着这个东西了不适,我是这样想的,我要用一个对象作为参数,付给我的一个大的对象,就像一张单据,包括很多单据条目,单据条目是一个对象,要把很多单据条目付给单据,然后整体处理单据
我要是有100个对象,都不释放的话,我就根本用不着这个东西了不适,我是这样想的,我要用一个对象作为参数,付给我的一个大的对象,就像一张单据,包括很多单据条目,单据条目是一个对象,要把很多单据条目付给单据,然后整体处理单据
C cyradg Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #33 例如: TPerson(list.items[3]).Free; list.Delete(3);//不要少这句,Index=3出记录的对象不存在,删除索引 ====================================================================== list 只是记录对象指针,也就是数字,Delete只是删除数字,数字(指针)指向的对象它才不管,也管不了,管的了不成神仙了,所以先要Free对象。
例如: TPerson(list.items[3]).Free; list.Delete(3);//不要少这句,Index=3出记录的对象不存在,删除索引 ====================================================================== list 只是记录对象指针,也就是数字,Delete只是删除数字,数字(指针)指向的对象它才不管,也管不了,管的了不成神仙了,所以先要Free对象。
C chenybin Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #34 只有重新建立一个对象,让TPerson实现一个Assign方法,把值赋过去,然后把对象删除,因为你要的只是值而已 TPerson = class procedure Assign(Value : TPerson); …… end; percedure TPerson.Assign(Value : TPerson); begin Self.Name := Value.Name; …… end; 传的时候 procedure xxxxx(P : TPerson); var P_ : TPerson; begin P_ := TPerson.Create; P_.Assign(P); …… end; 最后在外面把P释放掉
只有重新建立一个对象,让TPerson实现一个Assign方法,把值赋过去,然后把对象删除,因为你要的只是值而已 TPerson = class procedure Assign(Value : TPerson); …… end; percedure TPerson.Assign(Value : TPerson); begin Self.Name := Value.Name; …… end; 传的时候 procedure xxxxx(P : TPerson); var P_ : TPerson; begin P_ := TPerson.Create; P_.Assign(P); …… end; 最后在外面把P释放掉
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #35 但个对象复制使这个样子了,如果我还有一个对象要复制到另一个对象里面怎么办,我则么仰泳程序生成很多对象
W wsp_731 Unregistered / Unconfirmed GUEST, unregistred user! 2005-08-26 #36 chenybin 非常感谢你的帮助,嗬嗬,问题解决了