Moin...
Du erzeugst die Objektliste mit OwnsObjects = True und gibst im destructor selbst die enthaltenen Bilder wieder frei. Das muß Puff machen...
Wenn du die Instanzen selbst verwalten möchtest dann OwnsObjects auf False. Dann würde das mit der Freigabe passen. Dann brauchst du aber auch nicht auf Assigned prüfen. Jeder Listeneintrag ist ein Pointer.
Delphi-Quellcode:
FSmileys := Smileys.Create(True); // OwnsObjects = True
.
.
.
destructor TSmileys.Destroy;
var
Smiley : TSmiley;
begin
// for Smiley in FSmileys do // diesen Block brauchst du nicht
// if Assigned(Smiley) then
// Smiley.Free; //
FSmileys.Free;
inherited Destroy;
end;
..fertsch.