Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi von Tlist ableiten (https://www.delphipraxis.net/3003-von-tlist-ableiten.html)

nebukadnezzar 17. Feb 2003 21:02


von Tlist ableiten
 
Ich würde gerne eine Listenklasse die nur eine bestimmte Klasse aufnimmt.
Um genau zu sein eine Liste die den Typ Tplayer beherbergt.
(Tplayer ist von Tobject abgeleitet)

Nur wie mache ich das? - mir wär vielleicht auch schon geholfen wenn ich ein beispiel sehe in dem von Tlist abgeleitet wurde.

Touchdown 17. Feb 2003 21:37

TMeinelist (TList)
procedure meinadd ( Pointer : TPlayer );
end;


PS: Alle Klassen sind von TObject abgeleitet

nebukadnezzar 18. Feb 2003 13:37

stimmt nicht ich kann auch komplett eine neue Klasse außerhalb der VCL hierachie erstellen

sakura 18. Feb 2003 13:42

Zitat:

Zitat von nebukadnezzar
stimmt nicht ich kann auch komplett eine neue Klasse außerhalb der VCL hierachie erstellen

Stimmt schon - TObject ist die Basisklasse aller Delphi-Klassen. Die VCL fängt erst bei TPersistent, Componenten bei TComponent an.

...:cat:...

nebukadnezzar 18. Feb 2003 14:17

warum konnt ich dann ne Klasse

Delphi-Quellcode:
TmyClass = class
private
   id:byte;
   name:string;
.
.
public
.
.
   constructor create;
   destructor destroy;
end;
erstellen?

sakura 18. Feb 2003 14:24

Weil Delphi die Klasse TObject automatisch erbt, wenn keine angegeben wird - warum wohl sonst ;)

Zitat:

Zitat von Die Delphi Hilfe
A class type declaration has the form

type className = class (ancestorClass)
memberList
end;

where className is any valid identifier, (ancestorClass) is optional, and memberList declares members--that is, fields, methods, and properties--of the class. If you omit (ancestorClass), then the new class inherits directly from the predefined TObject class.

P.S. Du solltest immer für den Destructor Destroy die override Direktive setzen, da dieser bereits in TObject als VIRTUAL definiert ist.
Delphi-Quellcode:
// DIE TOBJECT DEFINITION
TObject = class
    constructor Create;
    procedure Free;
    class function InitInstance(Instance: Pointer): TObject;
    procedure CleanupInstance;
    function ClassType: TClass;
    class function ClassName: ShortString;
    class function ClassNameIs(const Name: string): Boolean;
    class function ClassParent: TClass;
    class function ClassInfo: Pointer;
    class function InstanceSize: Longint;
    class function InheritsFrom(AClass: TClass): Boolean;
    class function MethodAddress(const Name: ShortString): Pointer;
    class function MethodName(Address: Pointer): ShortString;
    function FieldAddress(const Name: ShortString): Pointer;
    function GetInterface(const IID: TGUID; out Obj): Boolean;
    class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;
    class function GetInterfaceTable: PInterfaceTable;
    function SafeCallException(ExceptObject: TObject;
      ExceptAddr: Pointer): HResult; virtual;
    procedure AfterConstruction; virtual;
    procedure BeforeDestruction; virtual;
    procedure Dispatch(var Message); virtual;
    procedure DefaultHandler(var Message); virtual;
    class function NewInstance: TObject; virtual;
    procedure FreeInstance; virtual;
    destructor Destroy; virtual;
  end;
P.P.S.: Das TObject nicht abgeleitet wird liegt an der, lt. Borland, Compiler-Magic. ;)

oki 18. Feb 2003 15:40

Mal kurz ne Frage zwischendurch wenns erlaubt ist: Warum muß die Liste ausschließlich eine Klasse aufnehmen können?

Wenn Sie die benötigte aufnimmt ist doch ok!

Um verwechslungen zu Vermeiden kann mann ja einfach den Namen benutzen.

So etwa:
Delphi-Quellcode:
TPlayerList = class(TList)
Gruß oki

Touchdown 20. Feb 2003 20:26

Eine TList nimmt keine Klassen auf sondern nur Instanzen von Klassen :mrgreen:

Dein Beispiel ist vollkommen IO, man sollte Dinge so nennen, wonach man sie auch suchen würde ...

oki 21. Feb 2003 10:04

Das das mit der Instanz kommt war mal wieder klar. Nun macht manns mal kurz und schon kat man die Quittung. :chat:

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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