Hallo zusammen,
mir ist gerade beim Querlesen dieses Themas etwas aufgefallen, was zwar schon ein paar Tage her ist, aber worauf man vielleicht doch noch mal eingehen sollte - auch wenn es etwas von der ursprünglichen Frage von Daniel G weggeht. Es geht um eine Antwort von Hansa:
Zitat von
Hansa:
Delphi-Quellcode:
TDaten = class (TObject)
ID,
nr : integer;
// weitere Nutzdaten
end;
TListe = class (TObjectList)
Daten : TDaten; // <--- Edit Bbommel: Das ist doch so nicht richtig, oder?
end;
var Liste : TListe;
ListeElement : TDaten;
Die Liste weiß nun welche Daten sie erhalten soll.
Mir geht es um die von mir oben markierte Zeile und die damit wohl verbundene Aussage, dass die Liste nun weiß, welche Daten sie enthalten soll. Das halte ich so nicht für richtig. Man muss (und kann) doch einer Liste nicht anzeigen, welche Daten sie enthalten soll. Das muss sie ja auch gar nicht wissen, sondern nur, dass sie irgendwelche Nachfolger von TObject enthält, um deren Freigabe sie sich ggf. kümmern muss - alles weitere sollte die Liste selbst nicht interessieren.
In dem konkreten Beispiel von Hansa bräuchte man also eigentlich TObjectList gar nicht ableiten, sondern könnte es direkt benutzen, um die "TDaten" zu speichern. TObjectList braucht man nur dann abzuleiten, wenn man noch irgendwelche Eigenschaften für die Liste insgesamt speichern will, also sozusagen "Kopfdaten" für die gesamte Liste oder einen Status, solche Dinge. Gerne auch Methoden, mit denen die Objekte in der Liste irgendwie gespeichert und wieder geladen werden können.
@Hansa: Ich hoffe, das kommt jetzt nicht zu negativ rüber, aber es geht mir darum zu klären, ob ich selbst in den letzten Jahren etwas falsch verstanden habe, oder ob ich Glück habe und der Fehler lag wirklich bei dir.
Oder ob ich deinen Beitrag irgendwie völlig falsch verstanden habe...
Bis denn
Bommel