AW: Array Zeile löschen
Zitat:
Ich glaube, im Endeffekt hat jede mögliche/hier genannte Lösung ihre Vor- und Nachteile. Jetzt muss man sich nur noch das rauspicken, was einem am meisten zusagt ;-) Lg |
AW: Array Zeile löschen
... erst einmal vielen lieben Dank für eure Hilfe und Freundlichkeit - zuerst hab ich zwar nicht ganz verstanden, wovon ihr eigentlich redet, ich konnte mich aber dann gut anhand der Codebeispiele einfinden, danke noch einmal für die Mühe an dieser Stelle. Ich mach mich dann mal an den Umbau :) Melde mich, wenn es größere Probleme gibt oder wenn es geklappt hat.
*Edit* Funktioniert soweit wie ich gekommen bin gut; eine Frage hätte ich aber - wenn ich zwei Einheiten der Liste vergleichen will, also zwei gleichzeitig brauche, muss ich dann auch zwei temporäre "Gegner"-Variablen haben? *Edit2* Hm, bekomme folgende Fehlermeldung: --------------------------- Anwendungsfehler --------------------------- Exception EArgumentOutOfRangeException in Modul SpaceInvaders042.exe bei 000B6205. Argument out of range. --------------------------- OK --------------------------- Ich denke mal, dass bedeutet, dass die Liste nur sagen wir mal drei Einträge hat und ich nach dem vierten Frage..? Wir die Liste mit dem ".add"-Befehl nicht automatisch um eins erweitert? Das hatte ich so verstanden.. *Edit3* wenn ich es so "For I:=1 To Schussanzahl-1 Do" mache, geht es scheinbar. Fängt die Liste also schon bei 0 an zu zählen? Aber warum funktioniert dann der erste Schuss nicht? *Edit4*...erst Denken.. mit
Delphi-Quellcode:
geht es wunderbar. Werde mich am Wochenende weiter damit beschäftigen und (voraussichtlich) Rückmeldung geben. Danke nocheinmal!
For I:=0 To [...]
|
AW: Array Zeile löschen
Das Freigeben macht eine TObjectList von selber, wenn man es ihr sagt.
Delphi-Quellcode:
Nunja, eine kleine Erweiterung und schon läßt sich auch mit einer TObjectList<T> angenehm arbeiten.
type
TSimpleObjectList<T: class> = class(TList<T>) protected procedure Notify(const Value: T; Action: TCollectionNotification); override; public function Add: T; overload; function Insert(Index: Integer): T; overload; end; function TSimpleObjectList<T>.Add: T; begin Result := T.Create; inherited Add(Result); end; function TSimpleObjectList<T>.Insert(Index: Integer): T; begin if (Index < 0) or (Index > Count) then Items[Index]; Result := T.Create; inherited Insert(Index, Result); end; procedure TSimpleObjectList<T>.Notify(const Value: T; Action: TCollectionNotification); begin try inherited; finally if Action = cnRemoved then Value.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 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