Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Einzelne Elemente eins arrays löschen
UcL - Do 13.03.03 19:06
Titel: Einzelne Elemente eins arrays löschen
Hallo!
Ich hab für die Figuren in meinem Spiel zu verwaltung einen array ( blabla : array of TFigur) ... wenn nun eine der figuren stirbt will ich diese natürlich aus dem array löschen. ich wollte das einfach mit blabla[28].free machen und anschließend die länge des arrays um 1 verkürzen. kann ich das so machen ? gibts da irgendwelche probleme ?
Gruß
UcL
MSCH - Do 13.03.03 19:52
So einfach ein Array-Eintrag löschen und dann das Array verkürzen geht nur, wenn du alle Einträge dann um die Anzahl der gelöschten Einträge verschiebst.
B:Array of TObject;
B[1].Free löscht die Referenz auf TObjekt, gibt aber nicht den Speicher von B[1] frei !!
Grüße
MSCH
UcL - Do 13.03.03 23:14
hmm ja, das dacht ich mir schon, dass es da probleme geben würde ...
nur, wie verschieben ich die anderen einträge ?
sowas wie b[1] := b[2] wird ja net gehen oder ?
Gruß
Ulrich
UGrohne - Do 13.03.03 23:20
Du machst das in einer Schleife:
Quelltext
1: 2: 3: 4:
| for i:=loeschindex to Length(array)-2 do begin array[i]:=array[i+1] end; SetLength(array,Length(array)-1); |
Nicht getestet!!!
UcL - Do 13.03.03 23:26
ok danke, das ist ja so wie ichs mir auch vorgestellt hab ... bin nur bei sowas (also arrays ;) ) in delphi noch etwas vorsichtig ... noch blutiger anfänger.
Danke!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!