Wichtig ist, wer den "Besitz" (Ownership) über die Objekte übernimmt.
Das Objekt, das den Besitz über ein anderes übernommen hat ist verantwortlich für die Freigabe.
Es darf nur einen Besitzer geben.
Gibt es keinen Besitzer entsteht ein Speicherleck; gibt es mehr als einen folgt eine mehrfache Freigabe.
Die Klasse TObjectList hat im Constructor Create() einen Parameter, der angibt, ob der Besitz übernommen werden soll.
Bei den Objekte der Klasse TKategorie wäre der Besitzer "KomKats" (class(TKategorien)).
Bei den Artikel wird das schon schwieriger.
Ein Artikel könnte mehreren Kategorien angehören.
Wenn dies der Fall ist, kann die Klasse TKategorie nicht den Besitz über die Artikel übernehmen, sondern es müsste dann ein separate Artikelliste geben.
Diese Artikelliste könnte von "KomKats" geführt werden.
Zitat von
DJ-SPM:
wie bekomme ich es dann hin, dass im nächsten Durchlauf das Objekt mit allen Eigenschaften wieder "geleert" ist und so nicht fälschlicherweise Daten eingetragen werden, die vom vorherigen Durchlauf kommen.
Das kann gar nicht passieren, schlieslich erzeugst du in jedem Durchlauf ein neues Objekt.
Dieses Objekt hat keine Daten vom Vorgänger.