![]() |
Beliebig viele Instanzen von einer abgeleiteten Klasse
Ich habe gerade wieder mal Zeit gefunden, mich an meine typisierte Datei für Baumstrukturen ranzumachen, stoße jetzt aber auf ein kleines Problem, zu dass ich einen Denkanstoß brauchen könnte.
Wie in ![]() Frage: Wie kann ich nun Instanzen der abgeleiteten Klasse erzeugen bzw. wie bekomme ich die Instanzen in die Funktion (ich weiß vorher nicht, wie viel ich brauch, eine vorgefertigte Liste scheidet also aus), ohne die Deklaration der abgeleiteten Klasse dieser Unit bekannt zu machen? Die einzige Möglichkeit, die mir einfiele, wäre, eine Callback-Prozedur an die Einleseprozedur zu übergeben, welche dann bei Bedarf die Callback-Methode aufrufen würde. Die Callback-Methode würde dabei eine Instanz dieser (abgeleiteten) Klasse erzuegen, die nun verwendet werden könnte. Hmm, während ich das hier schreibe, merke ich, dass diese Methode mit der Callback-Prozedur gar nicht so schlecht ist, wie ich anfangs dachte. Aber da ich dies nicht umsonst schreiben will, frage ich trotzdem, vielleicht kann mir doch jemand eine bessere Lösung vorschlagen. P.S. Blöd, dass der Titel nur so kurz sein darf - ich hätte noch ein paar Worte mehr brauchen könnnen :wink: |
Re: Beliebig viele Instanzen von einer abgeleiteten Klasse
Ich würde ja zu 'ner MetaKlasse raten:
Delphi-Quellcode:
CU mr2
type
TAbstractClass = class of TAbstractObject; TAbstractObject = class(TObject) protected procedure AbstractMethod; virtual; abstract; end; TConcreteObject = class(TAbstractObject) protected procedure AbstractMethod; override; end; TFileReader = class(TObject) private FItemClass: TAbstractClass; public property ItemClass: TAbstractClass read FItemClass write FItemClass; end; implementation procedure TFileReader.ReadFromFile; begin // über die Metaklasse können hier beliebige Klassen erstellt werden FItemClass.Create; end; var aFileReader: TFileReader; begin aFileReader := TFileReader.Create; try aFileReader.ItemClass := TConcreteObject; // notwendige Methoden aufrufen aFileReader.ReadFromFile; finally FreeAndNil(aFileReader) end; end; |
Re: Beliebig viele Instanzen von einer abgeleiteten Klasse
Hm, ich wusste nicht, dass es sowas gibt.
Leider stoße ich da auf einige Probleme. Anscheinend kann ich auf keine Properties von Metaklassen zugreifem, und überhaupt habe ich die Verwendung von denen noch nicht ganz geblickt. Wie auch immer, bevor ich dich jetzt mich Fragen überschütte, geh ich mal lieber in die Heia-Kiste und schau mir das in Ruhe morgen an, vielleicht werd ich mir die Metaklassen dann selbst erschließen können. Aber danke für den Hinweis! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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