Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi free erzeugt Fehler (https://www.delphipraxis.net/152887-free-erzeugt-fehler.html)

himitsu 11. Jul 2010 17:44

AW: free erzeugt Fehler
 
Der Spruch "Es kann nur Einen geben", trifft halt an vielen Stellen zu.

Wenn du über das Array die Objekte freigeben willst, dann ist das Array, bzw. sind die einzelnen Felder quasi der Owner ihrer zugeordneten Objekte.
Tja, und bei Objekten darf es halt nur einen Besitzer geben, welcher für die Freigabe zuständig ist, es sei denn die anderen "owner" werden beim Löschen benachrichtigt, daß das gelöschte Objekt nun weg ist und sie es aus ihrer Liste entfernen sollen.

mkinzler 11. Jul 2010 17:46

AW: free erzeugt Fehler
 
Eine Objektliste kann Eigentümer der Objekte sein, aber ein Array? :gruebel:

himitsu 11. Jul 2010 17:51

AW: free erzeugt Fehler
 
Ob du nun einer Objektliste sagst, sie solle sich um das Löschen kümmern
oder ob man sich selber bei einer Liste/Array um das Löschen kümmer,
ist hierbei unbedeutend.

Der Owner ist einfach nur für die Freigabe/Löschen zuständig ... egal, wer da nun löscht.

Hier ist es halt so, daß 2 Felder des Arrays dafür zuständig gemacht wurden ... das kommt auf's Selbe raus, als wenn man dieses Objekt zweimal in eine Objektliste stecken würde und diese dann alles freigeben soll.

ChrisE 12. Jul 2010 08:32

AW: free erzeugt Fehler
 
Hallo,

eine Möglichkeit wäre es doch vor dem Free erst mal alle Einträge auf "gleichheit" zu prüfen und nur die in eine Zu-Löschen-Liste zu packen die nicht identisch sind. Diese wird dann eben durchlaufen und deren Objekte frei gegeben.

Nur so anbei.

Greez, Chris

Sir Rufo 12. Jul 2010 08:43

AW: free erzeugt Fehler
 
Benutze eine separate TObjectList (OwnsObjects auf True) um dort die Level-Instanzen zu speichern.
In deinem Array kannst du dann diese Instanzen sooft verwenden wie du möchtest.
Beim Beenden des Programms einfach nur die TObjectList mit Free aus dem Speicher entfernen und der Drops ist gelutscht.

dominikkv 12. Jul 2010 10:40

AW: free erzeugt Fehler
 
http://www.delphipraxis.net/152901-m...ml#post1034913

fui-tak 12. Jul 2010 11:47

AW: free erzeugt Fehler
 
Danke an alle für die flotten Antworten!!

Ich habe jetzt die Lösung von Sir Rufo mit der TObjectList gewählt und es klappt ohne Probleme :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz