Wenn ich das richtig verstehe dann brauchst du das doch gar nicht so
Icon ist (global) vorhanden, also wird nur das Bild getauscht.
Icon.LoadFromStream macht das Nötige: altes Bild freigeben, neues Bild erzeugen.
Release ist da schon kostenlos mit drinne.
Diesen Code habe ich mal durch den MemProof gejagt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
sI: string;
RS: TResourceStream;
i: integer;
begin
cl:= false;
for i := 0 to 20000 do
begin
if sI = 'I1' then sI:= 'I2' else sI:= 'I1';
RS := TResourceStream.Create(0, sI, RT_RCDATA);
try
RS.Position := 0;
Application.Icon.LoadFromStream(RS);
Image1.Picture.Icon.Handle := Application.Icon.Handle;
Label1.Caption:= IntToStr(i);
Application.ProcessMessages;
finally
RS.Free;
end;
end;
end;
Ergebnis: Keine Resourcenverschwendung zu erkennen.
Was bedeuted "IconData.hIcon := TNA_Icon.Handle;" bei dir?
Udo