AGB  ·  Datenschutz  ·  Impressum  







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

[OOP]: TClassList / TObjectList

Ein Thema von mytar · begonnen am 8. Sep 2004 · letzter Beitrag vom 10. Sep 2004
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#1

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 12:00
Zitat von Jelly:
Zitat von Delphi Hilfe:
TClass = class of TObject; Wenn Sie in der Deklaration eines Klassentyps keinen Vorfahren angegeben, erbt die Klasse direkt von TObject. Aus diesem Grund ist die Deklaration
Delphi-Quellcode:
TMyClass = class
 ...
end;
identisch mit
Delphi-Quellcode:
type TMyClass = class(TObject)
 ...
end;
Die zweite Variante verdient jedoch aus Gründen der Lesbarkeit den Vorzug.
Das interpretier ich als ganz deutlich, daß TObject der Urvater aller Klassen ist, und jede Klasse mindestens von TObject abgeleitet ist.
Das schon. Aber eine 'Class' ist nicht von TObject abeleitet, sondern nur der Klassentyp.
Deswegen steht da ja auch: TClass = class of TObject; , wobei es hier auf das 'class of' ankommt.

Zur ClassList bzw. ObjectList:

Delphi-Quellcode:
TMyClass = Class(TObject)
end;
TMyClassClass = class of TMyClass;
...

var
   i: integer;
   Klassen: TClassList;
   Objekte: TObjectList;
begin
   Klassen := TClassList.Create;
   i := Klassen.Add(TMyClassClass);

   Objekte := TObjectList.Create;
   Objekte.Add( Klassen[i].Create );
end;
Das hat zur Folge, das in der Liste Objekte nun genau ein Element vom Typ TMyClass ist, das über ein Element der Liste Klasse vom Typ TMyClassClass instanziert wurde.

TClassList wird daher auch gerne für ClassFactories eingesetzt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 23:46 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-2025 by Thomas Breitkreuz