2009-12-10 9 views
2

Je suis en train de le faire:conteneurs génériques dans Delphi

Où fonction FindSenderIndex (mise en œuvre encore) retournera index de l'élément où ASender avec MyObj matchs [i]. Expéditeur. Mais lors de la compilation, je reçois ce message d'erreur: "E2086 Type 'TList<T>' is not yet completely defined"

Qu'est-ce que je fais de mal? Merci d'avance. Pdta: Pouvez-vous me donner de bons exemples sur l'utilisation des conteneurs d'objets (TObjectList<T:class>=class(TList<T>))?

+0

Puis-je vous demander pourquoi vous utilisez un assistant de classe ici? Pourquoi ne pas faire quelque chose comme: TRecList = classe (TList Nat

+0

Vous avez raison, et je l'ai fait, je jouais avec Helper seulement. :) –

Répondre

5

Cela ressemble à un bogue dans le compilateur. Je suis en mesure de reproduire cela sous Delphi 2010. S'il vous plaît le signaler au QC.

La solution de contournement est assez simple, cependant. Déclarez

TRecList = class(TList<TItemRec>); 

à la place, et cela fonctionne.

Comme pour TObjectList<T>, c'est exactement la même chose que TList<T>, sauf qu'il accepte uniquement les objets, et il ajoute la propriété OwnsObjects. Si OwnsObjects est défini sur True, lorsque vous libérez la liste ou appelez les méthodes Clear ou Delete, tous les objets supprimés de la liste seront libérés.