Entwickler-Ecke

Multimedia / Grafik - Einzelnes TImage aus einem Array freigeben


Delete - Mo 22.05.17 18:48
Titel: Einzelnes TImage aus einem Array freigeben
- Nachträglich durch die Entwickler-Ecke gelöscht -


jfheins - Mo 22.05.17 20:02

Du setzt beim freigeben mit FreeAndnil nur die Variable "Bilder" auf nil. Wenn du bspw. das dritte Bild freigibst, ist Bilder zwar nil, in Bilder[2] steht aber noch der (jetzt ungültige) Verweis.

Baue einfach in die Prozedur EinzelnesBildLoeschenClick noch eine Schleife ein, die den Verweis auch aus dem Array löscht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.EinzelnesBildLoeschenClick(Sender: TObject);
begin
  for i := 0 to High(Bilder)
    if Bilder[i] = Bild
      Bilder[i] = nil;

  FreeAndNil(Bild);
end;


Delete - Mo 22.05.17 20:25

- Nachträglich durch die Entwickler-Ecke gelöscht -


haentschman - Di 23.05.17 18:32

Hallöle... :P
Hat das einen tieferen Sinn das du die modernen Features nicht nutzt. :wink:
Anstelle des Array of TImage hätte ich eine TObjectlist<TImage> genommen. Erstens keine Beschränkungen in der Grösse bzw. Grösseneinstellung und keine Probleme mir der Freigabe der Images.
Alle Bilder löschen: entweder DELETE oder CLEAR oder mit der Listenfreigabe der Instanz FREE

...fertsch :P


Delete - Di 23.05.17 21:13

- Nachträglich durch die Entwickler-Ecke gelöscht -


haentschman - Mi 24.05.17 05:44

Moin... 8)
Sorry...ich hatte Delphi 10.1 Starter in deinem Profil gelesen. :?


Delete - Mi 24.05.17 07:38

- Nachträglich durch die Entwickler-Ecke gelöscht -