Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TObjectList (https://www.delphipraxis.net/160695-tobjectlist.html)

twityzuz 26. Mai 2011 16:10

TObjectList
 
Hi Leute!
Ich programmiere gerade ein Spiel und suche eine Komponente, wo ich Objekte rein"packen" kann und die dann über einen ItemIndex (oder so ähnlich). Wie z.B. bei der ImageList:
-> Ich lade ein Bild rein und kann es dann über einen Index aufrufen
Könnte man vielleicht eine ObjectList nehmen und wenn ja, kann mir jemand erklären, wie man das macht?

LG & DiV
twityzuz

jaenicke 26. Mai 2011 16:17

AW: TObjectList
 
Warum versuchst du es nicht einfach? :roll:
Delphi-Quellcode:
uses
  Generics.Collections;

var
  MyList: TObjectList<TMyObjectType>;
begin
  MyList := TObjectList<TMyObjectType>.Create(True);
  try
    MyList.Add(TMyObjectType.Create(...));
    ...
    MyList[0]...
  finally
    FreeAndNil(MyList);
  end;
Wobei TMyObjectType die Klasse ist, deren Objekte du reinpacken willst.

s.h.a.r.k 26. Mai 2011 16:19

AW: TObjectList
 
Du hast schon die richtige Komponent gefunden :) sinnvoll wäre es, wenn du dir eine Demo-Anwendung schreibst, um zu testen, wie es funktioniert. Wir können dich auch nur auf die Hilfe verweisen, da es nicht nur zwei Methoden gibt :) Besonders an TObjectList ist aber, dass diese als Besitzer von den hinzugefügten Objekten fungieren kann, d.h. wenn du z.B. ein Remove machst, dann wird das entfernte Objekt automatisch freigegeben, oder wird die ObjectList freigegeben werden alle darin enthaltenen Objekte auch freigegeben. Dieses "Owner"-Verhalten kannst du über den Konstruktor steuern.

-- Edit: Der Vorschlag von jaenicke sollte dann zum Einsatz kommen, wenn du eine typsichere Programmierung haben willst, denn sonst musst du unter Umständen sehr oft casten. Die generischen Listen sind halt erst ab Delphi 2009 verfügbar.

twityzuz 26. Mai 2011 16:22

AW: TObjectList
 
Erstmal danke für eure hilfe:D
Also ich habe Delphi 7. Aber wie deklariere ich oder erstelle jetzt eine ObjectList?? *verzweifle*

LG

jaenicke 26. Mai 2011 16:26

AW: TObjectList
 
Genauso, nur ohne die Typangabe in spitzen Klammern dahinter.

stahli 26. Mai 2011 16:27

AW: TObjectList
 
Ich weiß nicht, ob es im D7 schon eine TObjectList gab.
Du kannst sonst genau so gut eine TList nutzen.

Der einzige Unterschied ist dass die Objekte nicht automatisch aufgelöst werden können, wenn sie aus der Liste entfernt werden. Man muss dann die entfernten Objekte ggf. explizit mit MyItemObject.Free auflösen.

s.h.a.r.k 26. Mai 2011 16:29

AW: TObjectList
 
Zitat:

Zitat von jaenicke (Beitrag 1103091)
Genauso, nur ohne die Typangabe in spitzen Klammern dahinter.

Und Generics gabs "damals" leider auch noch nicht :stupid:

DeddyH 26. Mai 2011 16:30

AW: TObjectList
 
Unter Delphi 7 gibt es bereits TObjectList (Unit Contnrs).

twityzuz 26. Mai 2011 16:32

AW: TObjectList
 
Zitat:

Zitat von jaenicke (Beitrag 1103091)
Genauso, nur ohne die Typangabe in spitzen Klammern dahinter.

Aber was bringt mir
Delphi-Quellcode:
uses
Generics.Collection;
:?::?::?:

Wenn ich es am Anfang der Unit einfach einfüge, meint Delphi, dass ich einen Programmierfehler mache...

DeddyH 26. Mai 2011 16:34

AW: TObjectList
 
Nimm die Unit Contnrs und einfach TObjectList.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 Uhr.
Seite 1 von 3  1 23      

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-2025 by Thomas Breitkreuz