【发布时间】:2013-09-04 01:45:42
【问题描述】:
我有一个“Form 1”,它通过参数将对象列表发送到“Form 2”。但是 Delphi 将列表作为参考发送,所以如果我关闭释放列表中的“Form 1”错误发生在“Form 2”中
作为示例:
表格1:
var list: TObjectList<TPerson>;
begin
list := TObjectList<TPerson>.Create();
Try
list.Add(TPerson.Create('JOHN', 29));
list.Add(TPerson.Create('MARK', 27));
Form2.getList(list);
Finally
FreeAndNil(list);
End;
问题是释放后“Form 1”中的列表引用指向一个已经释放的对象。
问题是:
如何将列表作为副本而不是参考发送到“表格2”?
谢谢!
【问题讨论】:
-
比你想象的要难。第一步是将TPerson转换为值类型,即记录。一旦你完成了该列表复制就变成了单行。
标签: delphi delphi-xe2