![]() |
Klassen mit virtuellem Constructor
Moin,
TComponent besitzt ja einen virtuellen Constructor ... gibt es da noch andere delphieigene "Basistypen", welche über sowas verfügen? Es geht um die Definition für eine Deserialisierung meines himXML, also speziell darum, welche Classen man dafür registrieren kann. Das Problem ist ja, daß dieses nur mit Klassen geht, welche über sowas verfügen, da man ja nur die Klassen registrieren kann/müßte und ohne einen solchen Constructor lassen sich "normale" Klassen nicht automatisch erstellen (.Create).
Delphi-Quellcode:
var registriert: array of TComponent;
objekt := registriert[i].Create; |
Re: Klassen mit virtuellem Constructor
Gib einfach mal in Delphi 7 in der Delphi-Hilfe unter dem Tabsheet Suchen "constructor virtual" ein.
Dort werden mir dann zumindest alle damit aufgelistet :) Abtippen wäre mir grad zuviel Aufwand :wink: MfG Alaitoc |
Re: Klassen mit virtuellem Constructor
Joar, die über 500 Suchergebnisse kenn ich, allerdings sucht der hier bei "constructor virtual" nach "constructor OR virtual" und das bringt mir recht wenig.
|
Re: Klassen mit virtuellem Constructor
500 Suchergebnisse? :shock:
Also bei mir waren das nur ein paar... Hab ich auf irgendwas draufgeklickt :gruebel: Also eigentlich sollte das darüber gehen, ging bei mir zumindest...nur leider hab ich hier zuhause kein Delphi 7 drauf. MfG Alaitoc |
Re: Klassen mit virtuellem Constructor
Liste der Anhänge anzeigen (Anzahl: 1)
Nja, es sind mehr, aber bei 500 wird aufgehört mit auflisten.
Wie gesagt, es wird leider ODER verknüpft und demnach werden alle Beiträge gefunden, wo eines der beiden Wörter drinsteht ... als quasi jede Komponente, welche es gibt. Im Grunde haben auch alle VCL-Komponenten einen viruellen Konstructor, da sie natürlich von TComponent abstammen. Und ich würde gern wissen, ob noch antere "fundamentale" Klassen soeinen haben, so wie eben TComponent. [add] Hab mich schon etwas durch die Deklarationen gekämpft und bis jetzt diese gefunden: Zitat:
und die grauen dürften für sowas eh nicht in Frage kommen |
Re: Klassen mit virtuellem Constructor
Also ich schau morgen einfach nochmal nach was ich alles da hatte, wundert mich irgendwie
das es soviele Einträge sind... werde sie dann halt mal abtippen :-D |
Re: Klassen mit virtuellem Constructor
Zitat:
|
Re: Klassen mit virtuellem Constructor
bei der alten OH konnte man noch selber bestimmen, wie gesucht werden so
- Wörter UND oder ODER verknüpft - Themen ohne Überschrift beachten - usw. das geht jetzt nicht mehr vorallem daß die Suche mehrere Wörter einfach per ODER verknüpft :wall: @uligerhardt hatte ich versucht, aber irgendwie mochte er meinen regulären Ausdruck nicht und fand einfach nichts :cry: drumm hatte ich dann nach "virtual" als ganzes Wort gesucht und mich durch viele Units geklickt :? ich baue aber grade meine Seralisierung nochmals um und gestalte es so, daß man dann auch noch solche Basisklassen nachrüsten kann :-D (ich hoffe, daß es dann auch so läuft, wie es geplant ist) |
Re: Klassen mit virtuellem Constructor
Zitat:
Code:
$(BDS)\Source\Win32\VCL\CaptionedDockTree.pas
57 $(BDS) Create(DockCaptionOrientation: TDockCaptionOrientation); virtual; $(BDS)\Source\Win32\VCL\Controls.pas 439 $(BDS) Create(AControl: TControl); virtual; 673 $(BDS) Create(Control: TControl); virtual; 697 $(BDS) Create(Control: TControl); virtual; 1842 $(BDS) Create(DockSite: TWinControl); virtual; $(BDS)\Source\Win32\VCL\Forms.pas 637 $(BDS) CreateNew(AOwner: TComponent; Dummy: Integer = 0); virtual; $(BDS)\Source\Win32\VCL\Graphics.pas 704 $(BDS) Create; virtual; $(BDS)\Source\Win32\VCL\OleAuto.pas 100 $(BDS) Create; virtual; $(BDS)\Source\Win32\VCL\ShadowWnd.pas 51 $(BDS) CreateShadow(AOwner: TComponent; ControlSide: TControlSide); virtual; $(BDS)\Source\Win32\VCL\Themes.pas 389 $(BDS) Create; virtual; |
Re: Klassen mit virtuellem Constructor
Zitat:
|
Re: Klassen mit virtuellem Constructor
So das kommt zumindest bei mir bei der Suche raus:
Vielleicht hilfts ja :wink: |
Re: Klassen mit virtuellem Constructor
Zitat:
da gibt es einige Klassen, welche direkt von TComponent abgeleitet sind und dann nochmal 'nen eigenen virtuellen Constructor einführen, anstatt den des Vorfahren zu nutzen. :shock: @Alaitoc: TDirectory und TSmallIntArray klingen schonmal gut dort können ganz gut Daten drinnenstecken, welche man bestimmt gern mal speichern möchte :-D gut, da man demnächst auch Klassen nachrüsten kann, wäre es nicht so schlimm, aber ich würde auch gern schon einige "wichtige" Klassen direkt bei der (De)Serialisierung unterstüzen, ohne daß man da zusätzlich noch viel machen muß. |
Re: Klassen mit virtuellem Constructor
Mich interessiert dein Ansatz, weil ich mich derzeit auch etwas mit XML Serialisierung in Delphi beschäftige (Delphi 2010 und die neue RTTI ist eine wahre Freude).
Versuchst du es so wie .Net zu machen, dass die Deserialisierung das Objekt erzeugt? |
Re: Klassen mit virtuellem Constructor
Zitat:
und wie es .Net macht weiß ich garnicht :oops: Fertig ist jetzt noch nicht viel, da ich es ja derzeit komplett umbau. (die Record- und Variantserialisierungen sind aber schon/wieder fertig) Standardmäßig handhabe ich es dann so, daß Klassen erstmal mal NUR in TCollections und .Components von TComponent automatisch erzeugt werden und z.B. Objekte in TObjektList, TStringList und Co. werden nur nach Angabe eines "Parameters" automatisch erzeugt, ansonsten wird die Liste so versucht zu laden, mit den Objekten, welche dort grade drinnen sind (also nur ihre Eigenschaften). Wenn der "Parameter" angegeben ist, dann werden die Objekte von deratigen Listen/Properties notfalls innerhalb der Serialisierung, bzw. über einen Callback (vom entsprechenden "Programmierer") neu erzeugt ... praktisch so ähnlich, wie es der Form-Loader der VCL macht. Speziell für die Record-Serialisierng erhoffe ich mir ja von der neuen RTTI viel. Aktuell muß man ja den Aufbau selber angeben. ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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