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?
Ein Therapeut entspricht 1024 Gigapeut.