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!