Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Komponente aus Array löschen

  Alt 13. Jun 2010, 10:39
Moin,
warum gibst du das letzte Element frei? Nicht der Inhalt sondern die Referenz wird bei der Aktion kopiert.
Das heißt die letzten beiden Einträge zeigen (vor den .Free) auf das gleiche Element. Durch das freigeben, wir das letzte Element aber freigegeben und zwar das letzte Element für „beide“ Arrays (also bevor du es verkürzt: Das letzte (was du evtl. willst) und das vorletzte (was du bestimmt nicht willst)).

Und warum setzt du den Tag für jedes Shape auf 1? Und auf das Popupmenü bekommt kein neues Tag, soll das so sein? Außerdem gibst du nicht (!) das gelöscht Element frei. Das verschwindet ins Nirvana, weil du einfach die Referenz mit den nachfolgenden Element überschreibst.

Das heißt, einfach Luckies Rat folgen und:
[...]Vorher aber das zu löschende Objekt freigeben.[...]
Interessant finde ich diesen Hinweis:
[...]Muss die Sortierreihenfolge nicht erhalten bleiben, kann man auch das letzte Element an die Stelle des zu löschenden Elementes kopieren.
Das ist noch einfacher zu implementieren.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat