Delphi中的通用容器

Bil*_*orn 2 delphi generics containers

我正在尝试这样做:

   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;
Run Code Online (Sandbox Code Playgroud)

FindSenderIndex其中功能(仍然实现它)将返回项目的索引ASender与配衬MyObj中[I] .Sender.但是在编译时我收到此错误消息:"E2086 Type 'TList<T>' is not yet completely defined"

我做得不好?提前致谢.

Pdta:您能给我一些关于如何使用Object Containers的好例子(TObjectList<T:class>=class(TList<T>))吗?

Mas*_*ler 5

这看起来像编译器中的错误.我可以在Delphi 2010下重现这一点.请在QC中报告.

但是,解决方法很简单.宣布

TRecList = class(TList<TItemRec>);
Run Code Online (Sandbox Code Playgroud)

相反,它的工作原理.

至于TObjectList<T>TList<T>,它只是接受对象,它添加了OwnsObjects属性.如果OwnsObjects设置为True,那么当您释放列表或调用ClearDelete方法时,它将释放从列表中删除的所有对象.