Moin,
Aber nur dann auf true stelle, wenn danach die Elemente noch bestehen sollen.
Nein, nein, dann muss es auf false stehen. OwnsObjects = true heisst : Beim Freigeben der Liste wird alles enthaltene aufgeräumt/entfernt. Du schreibst das ja selber im nächsten Satz.
[...]
Öhr ja mist ... du hast recht da fehlt irgendwo eine Verneinung.
Und warum habe ich das mit Klassen gemacht? Ich frage mich nämlich wie du neue Einträge in die ObjectList bekommen willst:
Delphi-Quellcode:
var
datei : TArtGrundDaten;
list : TObjectList;
list := TObjectList.Create();
datei.name := 'foobar';
list.add(datei);
datei.name := 'Hallo Welt';
list.add(datei);
Das heißt irgendwo muss du Datei reinitialisieren. Das macht man i.d.R. mithilfe von new oder einer Methode (also wie bei bei der Methode Rect()). Ersteres hat den Nachteil: TObjectList wird das Objekt vermutlich nicht freigeben (korrigiert mich, wenn das nicht stimmt). Bei zweiteren, hast du ja ausgeführt, dass das ja eigentlich eine Methode der Datei ist, dann kann man das auch gleich zum Objekt machen.
UND inzwischen geht ja auch das:
Delphi-Quellcode:
type
TFoo = record
x : integer;
function getXsqr() : Integer;
end;
Und dann hatte ich auch erwähnt, dass man TFile von TMetaData erben lassen kann. Das geht bei records nicht.
Delphi-Quellcode:
type
TMetaData = class;
TFile = class(TMetaData)
Data : TStream;
end;
MfG
Fabian