Autor Beitrag
UcL
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 13.03.03 19:06 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 13.03.03 23:20 
Du machst das in einer Schleife:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: 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!