2010-08-09 21 views
1

我有類型德爾福TCollection數不增加添加後

  • TNotifyReply = A類(TCollectionItem)
  • TNotifyReplylist = A類(TOwnedCollection)

NotifyReplylist:= TNotifyReplylist.Create(個體經營, TNotifyReply);

調用這個函數(任意次數)後,數一數仍爲零

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

任何想法什麼怎麼回事?

+2

您的代碼按預期工作對我來說。當我使用D2009時,只需將PAnsiChar更改爲PChar。不過,自從D7以來,不認爲TCollection(Item)發生了很大的變化。 – 2010-08-09 06:20:09

回答

4

發現問題,TNotifyReply.Create是

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

改爲

inherited Create(ACollection); 
+1

這實際上是人們犯的一個非常常見的錯誤。 :-)我的建議?將類中的Collection變量重命名爲FCollection。 (除非它是一個屬性,但是再次,你是否希望程序員直接訪問這個集合?) – 2010-08-09 12:25:22

+1

@Workshop,'Collection'是基類'TCollectionItem'類的一個屬性。你*希望開發者能夠直接訪問它,否則項目將不知道屬於誰。該屬性通過使用構造函數參數中的值進行分配。 – 2010-08-09 15:46:56