AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array Zeile löschen

Ein Thema von VkPenguin · begonnen am 2. Mär 2012 · letzter Beitrag vom 7. Mär 2012
 
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#1

Array Zeile löschen

  Alt 2. Mär 2012, 23:08
Hallo,
mit eurer Hilfe habe ich inzwischen einiges an meinem Projekt geschafft. Ich brauchte mich eine Weile nicht melden,kam ich gut vorwärts . Nun gibt es aber einen Fehler in meinem Programm, der mir schon seit Anfang an zu schaffen macht, den ich aber immer vor mir hergeschoben hab. Folgendes Problem: In meinem Spiel werden die Positionen und Eigenschaften von z.B. Gegnern in Arrays (of Record) gespeichert. Wenn nun einer von ihnen stirbt (Dat[X].Alive=False) soll die Zeile gelöscht werden und alle anderen um Platz zu sparen "eins aufrücken". Grundsätzlich funktioniert das auch, aber wenn mehrere Gegner gleichzeitig ins Jenseits befördert werden entstehen Fehler. Hier meine bisherige Technik:

Delphi-Quellcode:
  X:=0;
  For I:=1 To Gegneranzahl+X DO
  Begin
   if not Gegner[I-X].alive then
   Begin
    if ((I-X)<>Gegneranzahl) THEN
    Begin
     Gegner[I-X].Wert:=Gegner[Gegneranzahl].Wert;
     Gegner[I-X].Funktion:=Gegner[Gegneranzahl].Funktion;
     Gegner[I-X].PosX:=Gegner[Gegneranzahl].PosX;
     Gegner[I-X].PosY:=Gegner[Gegneranzahl].PosY;
     Gegner[I-X].breite:=Gegner[Gegneranzahl].breite;
     Gegner[I-X].hoehe:=Gegner[Gegneranzahl].hoehe;
     Gegner[I-X].Farbe:=Gegner[Gegneranzahl].Farbe;
     Gegner[I-X].Maxzeit:=Gegner[Gegneranzahl].Maxzeit;
     Gegner[I-X].Alter:=Gegner[Gegneranzahl].Alter;
     [...............]
    End;
    X:=X+1;
    Gegneranzahl:=Gegneranzahl-1;
   End;
  End;
In einigen Tutorials hab ich "Swap Values" kennengelernt, damit könnte man das ganze sicher etwas vereinfachen; ich konnte aber nichts dazu finden, was hieran falsch sein könnte. Hat jemand vielleicht eine Idee ?

Alternativ: Könnte ich nicht theoretisch auch einfach den letzten mit demjenigen, der gelöscht werden soll Tauschen (es sei den selbiger ist der letzte) und dann den letzten löschen?

Danke schoneinmal!

Geändert von VkPenguin ( 2. Mär 2012 um 23:11 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 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 by Thomas Breitkreuz