Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Destroy - Wie lösche ich richtig ein Panel aus 'nem Array? (https://www.delphipraxis.net/79762-destroy-wie-loesche-ich-richtig-ein-panel-aus-nem-array.html)

MisterNiceGuy 27. Okt 2006 17:10


Destroy - Wie lösche ich richtig ein Panel aus 'nem Array?
 
Hi ich hab ein Array voller Panels, jetzt suche ich mir eins raus und "Destroye" es.
Das passiert hier:
Delphi-Quellcode:
findcomponent(baustein.Name).Destroy;
bausteine[i].Destroy;
Dabei wir das zu suchende Panel durch Baustein.name gefunden. Dieses Panel wird im Array erstellt.

Nun meine Frage:
Reicht die erste Zeile? Oder muss ich das Panel noch aus dem Array löschen oder mache ich das schon durch die erste Zeile Quellcode?

Danke für eure Hilfe!

xaromz 27. Okt 2006 17:15

Re: Destroy - Wie lösche ich richtig ein Panel aus 'nem Arra
 
Hallo,
Zitat:

Zitat von MisterNiceGuy
Reicht die erste Zeile? Oder muss ich das Panel noch aus dem Array löschen oder mache ich das schon durch die erste Zeile Quellcode?

Die erste Zeile zerstört das Panel, die zweite erzeugt im besten Falle eine AV. Der Grund ist einfach: Das Panel ist ja schon zerstört. Du musst also das Panel nur noch aus dem Array entfernen, aber wie das geht hängt davon ab, wie dieses implementiert ist.

Gruß
xaromz

semo 27. Okt 2006 17:19

Re: Destroy - Wie lösche ich richtig ein Panel aus 'nem Arra
 
die erste zeiel reicht, aber ich nutze die methode free():
Mit Free wird ein Objekt freigegeben. Wenn die Objektreferenz nicht nil ist, wird Destroy aufgerufen. Alle zur Laufzeit instantiierten Objekte, die keinen Eigentümer besitzen, sollten mit einem Aufruf von Free aufgelöst werden, damit sowohl das Objekt als auch der zugehörige Speicher korrekt freigegeben wird. Im Gegensatz zu Destroy funktioniert Free auch dann, wenn das Objekt nil ist. Es ist also kein Fehler, die Methode für ein Objekt aufzurufen, das niemals initialisiert wurde.

udn du solltest nach dem freigeben des objektes natürlich die länge deines arrays anpassen :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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