AGB  ·  Datenschutz  ·  Impressum  







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

TObjectlist - Container fuer?

Ein Thema von rowkajjh · begonnen am 16. Nov 2006 · letzter Beitrag vom 17. Nov 2006
Antwort Antwort
rowkajjh

Registriert seit: 9. Jan 2006
38 Beiträge
 
#1

TObjectlist - Container fuer?

  Alt 16. Nov 2006, 20:07
Hallo,

ich habe eine Klasse, die von TObject abgelitten ist:

type
TMyClass = class ( TObject )
private
...



Instanzen von dieser Klasse würde ich gerne in eine TObjectList verwalten. Leider erhalte ich aber:

[Pascal Fehler] cMsgCtrl.pas(138): E2010 Inkompatible Typen: 'TMyClass' und 'TObject'

wenn ich z.B. sowas machen will:

Result := fObjList[Index];

Was kann ich machen?
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TObjectlist - Container fuer?

  Alt 16. Nov 2006, 20:16
Hi
Schaue dir mal diesen Thread an: ständiges Typecasting bei Parametern
Dort findest du die Lösung, und nebenbei wird erklärt was Type casting ist.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TObjectlist - Container fuer?

  Alt 16. Nov 2006, 20:35
Oder kurz gesagt:
Du musst dem Compiler sagen, dass er annehmen soll, dass es sich um ein Objekt der von dir erstellten Klasse handelt (Typecasting).
Dies kannst du auf 2 Wegen erreichen.
1.
TMyClass(fObjList[Index]) 2.
(fObjList[Index] as TMyClass)
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TObjectlist - Container fuer?

  Alt 17. Nov 2006, 09:07
Die TObjectlist kann alle Objekte Speichern, die von TObject abgeleitet sind. Eingefügt werden diese einfach mit "Add"

myObjectlist.add(TBananenObject.create); Dabei kannst du in eine Liste auch unterschiedliche objekte speichern.

Delphi-Quellcode:
myObjectlist.add(TBananenObject.create);
myObjectlist.add(TApfelObject.create);
myObjectlist.add(TBirnenObject.create);
Wenn du darauf zugreifen willst, musst du ein Typecast durchführen

myboolean:=TBananenObject(myObjectlist[a]).hatKerne; Aber vorsichtig! So kannst du es nur machen, wenn du dir sicher bist, daß nur Bananenobjekte in der Liste sind. Ansonsten solltest du vorher püfen, was für ein objekt es ist.

Delphi-Quellcode:
if myObjectlist[a] is TBanabenObject then
  myboolean:=TBanabenObject(myObjectlist[a]).hatKerne;

Übrigens: Der Vorteil von TObjectList ist, daß es sich um die Freigabe der enthaltenen objekte kümmert, wenn du OwnsObjects auf true setzt. (Kann aber auch Nachteile haben)

Gruss Gerd
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TObjectlist - Container fuer?

  Alt 17. Nov 2006, 11:36
Zitat von bernau:
Übrigens: Der Vorteil von TObjectList ist, daß es sich um die Freigabe der enthaltenen objekte kümmert, wenn du OwnsObjects auf true setzt. (Kann aber auch Nachteile haben)
Wenn du schon das anführst, solltest du gleich dabei Sagen, das die Eigenschaft OwnsObject standardmäßig aus True steht.
Wenn das nicht gewünscht ist einfach MyObjectList := TObjectList.Create(False); aufrufen
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: TObjectlist - Container fuer?

  Alt 17. Nov 2006, 12:57
Wenn ihr das schon erklärt, dann weist doch bitte auch darauf hin, dass die Methode Extract() ein Objekt aus der Liste entfernt ohne das Objekt freizugeben - auch wenn OwnsObject auf true steht.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: TObjectlist - Container fuer?

  Alt 17. Nov 2006, 13:14
Zitat von Muetze1:
Wenn ihr das schon erklärt, dann weist doch bitte auch darauf hin, dass die Methode Extract() ein Objekt aus der Liste entfernt ohne das Objekt freizugeben - auch wenn OwnsObject auf true steht.
Damit hast du es ja grade erklärt. Dann brauche ich es nicht mehr.

Aber davon abgesehen, kannte ich diese Funktion bisher nicht. Oder habe sie wieder vergessen.


GErd
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:48 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