![]() |
Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Hallo, ich habe in einer selbst erstellten Klasse einige Felder als Objekt einer bestimmten Klasse.
Wie kann ich diese im Constructor bzw. Destructor dynamisch über eine "RTTI-Schleife" über alle vorhandenen Felder erzeugen/freigeben.
Code:
var
rttiContextFeld: TRttiContext; rttiTypeFeld: TRttiType; rttiField: TRttiField; begin rttiContextFeld := TRttiContext.Create; try rttiTypeFeld := rttiContextFeld.GetType(self.ClassType); for rttiField in rttiTypeFeld.GetDeclaredFields do begin if (rttiField.FieldType.ToString = AnsiUpperCase('TMyClass') then begin // Hier soll das Object erzeugt/freigegeben werden end; end; finally rttiContextFeld.Free; end; end; |
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Moin...:P
Warum über die RTTI? :gruebel: ...statt?
Delphi-Quellcode:
public
Bla :string read GetBla write SetBla; ... constructor TBlubb.Create; FMyClass := TMyClass.Create; // Das ganze Objekt... die speziellen Properties über Getter / Setter regeln. ... function TBlubb.GetBla: string; begin Result := FMyClass.Bla; end; Zitat:
|
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Delphi-Quellcode:
// erzeugen
rttiField.SetValue(Self, TValue.From<TMyClass>(TMyClass.Create)); // oder wie auch immer TMyClass.Create aufgerufen werden soll // freigeben rttiField.GetValue(Self).AsObject.Free; |
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Du kannst über
![]() Such mal in der Delphipraxis nach "getClass" dann bekommst du einige Beispiele. Die Klassen müssen allerdings vorher ![]() |
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Zitat:
Zitat:
|
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Zitat:
|
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Zitat:
|
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Zitat:
|
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Zitat:
Delphi-Quellcode:
oder
AssignTo
Delphi-Quellcode:
Funktion, kann sie auch sehr nützlich sein. Wenn es jetzt aber (wie hier im Beitrag) darum geht ein paar Felder einer sogar bekannten Klasse zu initialisieren, dann .. naja .. das kann man meiner Meinung nach auch manuell machen bzw. bei sehr vielen Feldern ein Array verwenden und die Properties/Setter/Getter über das
Equals
Delphi-Quellcode:
Keyword umsetzen.
index
|
AW: Objekte bestimmter Klassen dynamisch erzeugen und freigeben
Zitat:
Dadurch entfällt der eigene Cleanup-Code zu 100%. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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