Moin,
Du bist mit der TList vermutlich wirklich etwas zu kurz gesprungen.
Wie gesagt : TobjectList und OwnsObjects sollte auf true stehen.[...]
Aber nur dann auf
true stelle, wenn danach die Elemente
nicht mehr bestehen sollen. Und das ist doch bei ihm nicht der Fall: Also OwnObjects auf
false, dann werden die Objekte
nicht automatisch freigegeben. Ansonsten werden sie beim entfernen aus der Liste (z.B. mit Delete oder Clear) freigegeben. Also auch, wenn du die Liste freigibst. Du kannst OwnObjects jederzeit via property setzen und beim TObjectList.Create. Standardmäßig steht OwnObjects auf
true.
@Daniel : wäre gut, wenn man beim Schreiben sehen könnte, welche Delphi-Version eingesetzt wird. [...]
So ich habe mal ein
Eintrag erstellt.
Übrigens wenn ich das richtig verstehe würde ich das so in der Art machen:
Delphi-Quellcode:
TMetaData = class(TObject)
Name : string;
[...]
end;
TFile = class(TObject)
MetaData : TMetaData;
Data : TStream; // Oder TMemoryStream
end;
Alternativ könnte man auch TFile von TMetaData erben lassen. Dürfte glaub ich besser sein.
MfG
Fabian
PS: Ich würde das letzte als Typecast ansehen. Weil was ist, wenn du irgendwas anderes reinkloppst. Deshalb würde ich entweder Generics verwenden (gibts leider nicht für D7) oder halt das Kapseln.