![]() |
Array objekte destroy?
Hallo
ich habe da ein Problem ich arbeite schon etwas länger mit Delphi. Auch mit eigenen Klassen, die ich ja mit create erschaffe und dann mit destroy wieder freigebe und ich habe mir angewöhnt Objekte die nicht mehr gebraucht werden sofort freizugeben. So jetzt zu meinem Problem ich habe eine Klasse erstellt und dann ein Array mit dynamischer länge die während der laufzeit öfter geändert wird. So wenn ich hinten was dranhänge, dann erstellle ich mit create das neue Objekt. Dann habe ich mir gedacht wenn ich das Array verkürze, gebe ich die nicht merh benötigten mit destroy wieder frei.
Delphi-Quellcode:
(in Listbox1 und dem Array sind gleichviele Objekte)liste[listbox1.Count -1].Destroy; setlength(liste,length(liste)-1); Allerdings bekomme ich dann bei erneutem zugriff auf das array Probleme, beim zugriff auf das letzte Element. Meine frage ist jetzt wiso. Liegt es daran, dass er mit destroy gleich das array einen kürzer macht? schonmal danke für die Antworten lg Knoby oh merke grade ist ins falsche forum gerutscht ... tut mir leid ... |
Re: Array objekte destroy?
Bist du sicher, dass bei deinem Zugriff die Arraylänge noch mindestens 1 beträgt?
[Edit]bzw. warum nimmst du die Länge einer Listbox und nicht die des Arrays? |
Re: Array objekte destroy?
Nachdem du nicht mit Length(liste) arbeitest, drängt sich der Verdacht auf, dass eben einfach der Index dann nicht mehr stimmt. Wie äußern sich denn die Probleme?
Übrigens reicht es, das array einfach um eins zu verkürzen, um das letzte Element zu entfernen - der Speicher wird dann ja eh freigegeben ;) |
Re: Array objekte destroy?
Zitat:
|
Re: Array objekte destroy?
Zitat:
Aber warum nutzt du keine TObjectList anstatt einem Array? Dort kümmert sich diese automatisch um die Freigabe der Instanzen beim Überschreiben, Löschen der Elemente wie auch beim Clear der Liste. |
Re: Array objekte destroy?
Zitat:
|
Re: Array objekte destroy?
hey
jo danke das hat mir sehr geholfen, das mit dem Tobjectlist hatte ich auch schon überlegt, da ich aber noch nie so wirklich damit gearbeitet habe habe ich lieber arrays genommen werde es jetzt auf objectlist umschreiben die probleme äußerten sich insoweit, dass ich nicht mehr auf das letzte objekt zugreifen konnte, also das nicht ein sondern zwei objekte weniger in dem array waren |
Re: Array objekte destroy?
Nebenbei: Den Destruktor (Destroy) sollte man (wie auch in der Hilfe steht) nie selbst direkt aufrufen, sondern Free benutzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz