我正在尝试这样做:
type
TItemRec = record
Sender : TAction;
OwnerPack : HModule;
ChildForm : TForm;
end;
TRecList = TList<TItemRec>;
THelperList = class helper for TRecList
function FindSenderIndex(ASender: TAction): Int16;
end;
var
MyObj : TRecList;
其中 FindSenderIndex 函数(仍然实现它)将返回 ASender 与 MyObj [i] .Sender 匹配的项目的索引。但是在编译时我收到此错误消息:"E2086 Type 'TList<T>' is not yet completely defined"
我做得不好?提前谢谢。
Pdta:您能给我一些关于如何使用对象容器(TObjectList<T:class>=class(TList<T>))
的好例子吗?
答案 0 :(得分:5)
这看起来像编译器中的错误。我可以在Delphi 2010下重现这一点。请在QC中报告。
但解决方法很简单。声明
TRecList = class(TList<TItemRec>);
相反,它有效。
对于TObjectList<T>
,它与TList<T>
完全相同,只是它只接受对象,并添加了OwnsObjects属性。如果OwnsObjects设置为True,那么当您释放列表或调用Clear
或Delete
方法时,它将释放从列表中删除的所有对象。