AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mehrere Klasseninstanzen in einem Array/einer TList
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Klasseninstanzen in einem Array/einer TList

Ein Thema von Marphy · begonnen am 3. Mai 2005 · letzter Beitrag vom 4. Mai 2005
 
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Mehrere Klasseninstanzen in einem Array/einer TList

  Alt 3. Mai 2005, 16:08
Wenn du hier in der Sparte etwas herunterscrolls dürftest du das finden.
Les' dir das erstmal durch...


Da du es nicht gelesen hast... und shmia anscheinend auch nicht ...
Hier ein kleiner Bleisitift:

Simple SubClass mit einer Property...
Und einer exakt auf sie typisierten ObjectList.
Delphi-Quellcode:
unit uSubClass;

interface
uses
   Contnrs;

type
   TSubClass = class
   private
      fSomeProperty: Integer;
   protected
      procedure setSomeProperty(const aValue: Integer); virtual;
   public
      property SomeProperty: Integer read fSomeProperty write setSomeProperty;
   end;

{$DEFINE TYPED_OBJECT_LIST_TEMPLATE}
type
   _OBJECT_LIST_ITEM_ = TSubClass;
{$INCLUDE TypedObjectList_template.pas}
   TSubClassList = _OBJECT_LIST_;

implementation
{$INCLUDE TypedObjectList_template.pas}

{ TSubClass }

procedure TSubClass.setSomeProperty(const aValue: Integer);
begin
   fSomeProperty := aValue;
end;

end.
Und nun müssen wir nur noch die Liste benutzen.
Und zwar OHNE hässliche TypeCasts und vor allem OHNE untyped Pointer!
Delphi-Quellcode:
unit uMainClass;

interface
uses
   uSubClass;

type
   TMainClass = class
   private
      fSubClassList: TSubClassList;
   protected
      property SubClassList: TSubClassList read fSubClassList;
   public
      function CreateInstance(): Integer; virtual;
      function AccessInstance(const aIndex: Integer): TSubClass; virtual;

      constructor Create(); virtual;
      destructor Destroy();override;
   end;

implementation

{ TMainClass }

constructor TMainClass.Create();
begin
   //sollen die Instanzen mit der Liste freigegeben werden?
   // Ja -> True / Nein -> Rate mal ;-)
   fSubClassList := TSubClassList.Create(True);

end;

function TMainClass.CreateInstance(): Integer;
var
   NewInstance : TSubClass;
begin
   NewInstance := TSubClass.Create();
   NewInstance.SomeProperty := 1; // halt irgendwas in die Properties ;-)

   Result := SubClassList.Add(NewInstance);
end;

function TMainClass.AccessInstance(const aIndex: Integer): TSubClass;
begin
   if (aIndex >= 0) and (aIndex < SubClassList.Count) then
      Result := SubClassList[aIndex]
   else
      raise SomeJanzBöserIndexException.Create(aIndex, 0, SubClassList.Count);
end;


destructor TMainClass.Destroy();
begin
   fSubClassList.Free();
   inherited;
end;

end.
  Mit Zitat antworten Zitat
 


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 00:18 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