2010-08-09 2 views
1

j'ai les typesdelphi TCollection compte pas augmenter après Ajouter

  • TNotifyReply = class (TCollectionItem)
  • TNotifyReplylist = class (TOwnedCollection)

NotifyReplylist: = TNotifyReplylist.Create (auto, TNotifyReply);

Après avoir appelé cette fonction (nombre de fois Tous), Comptez encore zéro

function TNotifyReplylist.addItem: TNotifyReply; 
begin 
    Result := inherited Add as TNotifyReply; 
    OutputDebugString(PAnsiChar('Count > '+ inttostr(count))); 
end; 

Toute idée ce qui se passe ici?

+2

Votre code fonctionne comme prévu pour moi. Seulement dû changer PAnsiChar à PChar pendant que j'utilise D2009. Ne pensez pas que TCollection (Item) a beaucoup changé depuis D7. –

Répondre

4

trouvé le problème, TNotifyReply.Create était

constructor TNotifyReply.Create(ACollection: TCollection); 
begin 
    inherited Create(Collection); 
    .... 

changé à

inherited Create(ACollection); 
+1

C'est en fait une erreur très commune que les gens font. :-) Mon conseil? Renommez la variable Collection de votre classe en FCollection. (Sauf si c'est une propriété mais encore une fois, voulez-vous que les programmeurs aient un accès direct à la collection?) –

+1

@Workshop, 'Collection' est une propriété de la classe de base' TCollectionItem'. Vous * voulez * que les développeurs aient un accès direct à cela, sinon les éléments ne sauront pas à qui ils appartiennent. La propriété est affectée en utilisant la valeur de l'argument constructeur. –

Questions connexes