Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Objekt aus dyn. Array löschen (https://www.delphipraxis.net/35474-objekt-aus-dyn-array-loeschen.html)

stoermi 7. Dez 2004 18:50


Objekt aus dyn. Array löschen
 
Hallo!

Angenommen, ich habe ein dynamisches Array von Instanzen einer eigenen Klasse mit 10 Objekten drin.

Wie lösche ich beispielsweise das 4. Objekt (array[3])?

Per for-Schleife wird das 5. Objekt zum 4., das 6 zum 5, usw.
Dann wird das Array auf 9 verkürzt (setLength(array,9)).

Reicht das schon?

Oder muss ich irgend wann (wenn dann doch sicherlich vor der Schleife) noch den Destructor bemühen.

jim_raynor 7. Dez 2004 18:54

Re: Objekt aus dyn. Array löschen
 
Vorher musst du mit Free das Objekt freigeben.

stoxx 7. Dez 2004 18:56

Re: Objekt aus dyn. Array löschen
 
wenn Du Deine theoretischen Überlegungen nicht gerade für den Informatik Unterricht brauchst, würde ich Dir TList ans Herz legen :-)

Bernhard Geyer 7. Dez 2004 18:56

Re: Objekt aus dyn. Array löschen
 
Für deine Aufgabe ist TObjectList geeigneter, da diese einiges an Verwaltungsaufwand abnimmt (Automatische freigabe beim Löschen, Alle Einträge könnnen jederzeit gelöscht werden).

Aber sonst reicht dein Ablauf schon.

Pseudemys Nelsoni 7. Dez 2004 19:04

Re: Objekt aus dyn. Array löschen
 
Zitat:

Per for-Schleife wird das 5. Objekt zum 4., das 6 zum 5, usw.

wieso willst du so oft was verschieben? kopier einfach das letzte item deines arrays, an die stelle des zu löschenden items und setze dann die laenge -1.

sagen wir mal du möchtest das vierte element(=3) löschen....

Delphi-Quellcode:
MyArray[3] = MyArray[High(MyArray)];
SetLength(MyArray, Length(MyArray)-1);

jim_raynor 7. Dez 2004 19:10

Re: Objekt aus dyn. Array löschen
 
Um allen das Leben zu erleicht habe ich folgenden Beitrag für die Codelib vorgeschlagen:

http://www.delphipraxis.net/internal...ct.php?t=41245

Pseudemys Nelsoni 7. Dez 2004 19:27

Re: Objekt aus dyn. Array löschen
 
der code sieht ein bisschen übertrieben aus :-D

jim_raynor 7. Dez 2004 19:28

Re: Objekt aus dyn. Array löschen
 
Zitat:

Zitat von Pseudemys Nelsoni
der code sieht ein bisschen übertrieben aus :-D

Den musst du aber nur ein mal schreiben und kannst damit jedes beliebige Array kürzen ;)

Pseudemys Nelsoni 7. Dez 2004 19:34

Re: Objekt aus dyn. Array löschen
 
respekt, sieht nicht schlecht aus, haste selber geschrieben? (bringste mir asm bei? :???: )

jim_raynor 7. Dez 2004 19:36

Re: Objekt aus dyn. Array löschen
 
Zitat:

Zitat von Pseudemys Nelsoni
respekt, sieht nicht schlecht aus, haste selber geschrieben? (bringste mir asm bei? :???: )

Denke das sollten wir im anderen Beitrag klären. Hab ich selber geschrieben. Asm kann ich dir auch nicht beibringen, da ich es zu wenig kenne. Für diese Anwendung hat es gerade noch gereicht, aber wie gesagt, das meisste hab ich dadurch rausgefunden, dass ich einfach mir den Asm-Output vom Compiler angeschaut habe.

[edit]Danke[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.

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