Delphi-Quellcode:
try
IconData.Png48 := TPngImage.Create;
IconData.Png48.Assign(MainDlg.pngImageListLeft48Standard.PngImages.Items[IconData.IconID].PngImage);
IconList.Add(IconData); // ????
except
IconData.Free;
raise;
end;
Wozu eine Kopie? Du hast ja schon je Durchlauf ein neues TIconData.
Und das eigentliche Freigeben macht die ObjectList mit OwnsObjects=True.
Aber warum ist das IconBuffer.Read vor dem TIconData.Create?
Der Compiler sollte da eigentlich auch meckern, vonwegen nicht initialisierte Varaible.
Wenn ja, warum hörst du nicht auf ihn?