![]() |
Delphi-Version: XE2
Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Hallo-
Ich komme auf keinen grünen Zweig, wo im Jahr 2013 des Herrn sich noch ein Unterschied von published zu public verbirgt. Als Delphi anscheinend noch nur rudimentäre RTTI-Konzepte verfügte, musste man Member einer Klasse wohl explizit mit published kennzeichnen um mittels RTTI überhaupt darauf zugreifen zu können. Die RAD-Hilfe (Stand: XE4) schreibt hierzu: C++: Zitat:
![]() Delphi: Zitat:
![]() Besonders im Delphi-Fall scheint das wieder etwas zu sein, was seit zehn Jahren dort steht und seitdem niemand mehr angefasst hat. Denn entweder liege ich komplett daneben, oder
Möglicherweise irre ich mich in zwei Dingen:
Ich freue mich auf Erleuchtung :-) |
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Wenn Du selbst eine Komponente schreibst und deren Eigenschaften im Objekt-Inspektor sehen (und verändern) möchtest, dann müssen diese im "published"-Bereich liegen. Nur dann werden sie auch automatisch vom Streaming-System erfasst und landen in der .DFM-Datei.
|
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Auf die
Delphi-Quellcode:
Member kannst du mit
published
![]() ![]() Für die anderen Member benötigst du ![]() |
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Es gibt die RTTI (Seit D1) und die extended RTTI (Seit D2009?)
Für die "normale" RTTI gelten die Aussagen noch. Extended RTTI kann man ja aktivieren/deaktivieren. |
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Extended RTTI habe ich so oder so drin und abwärtskompatibel zu alten Delphi-Versionen muss es auch nicht sein, also macht das die Sache ja einfacher :-)
Zusammenfassend ist es also nur eine Sache die nötig ist, damit die Delphi-IDE weiß, was sie zur Serialisierung in die .DFM-Datei hernehmen muss? Wäre es heute auch noch gängige Praxis, in Delphi eine Klasse so aufzubauen, dass langlebige Eigenschaften published und laufzeitabhängige Dinge nicht published sind? :gruebel: (Man merkt vielleicht, dass diese Frage hier nur ein Vorläufer für meine eigentliche ist - Ich mache mich gerade schlau, wie ich in Delphi eine Serialisierung von eigenen Objekten möglichst elegant und automatisiert über die Bühne bringe...) |
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
... dafür sind Attribute noch ganz nützlich.
So kannst Du Felder oder Eigenschaften kennzeichnen, ob und wie sie serialisiert werden sollen. |
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Zitat:
ich habe mit der alten RTTI und 2 Methoden mein Klassenmodell sehr simpel, schnell und zuverlässig serialisieren und deserialisieren können. Die neue RTTI habe ich nicht verwendet, weil nicht benötigt und zudem ist sie schlicht langsamer als TypInfo (oder zumindest war sie zu zeiten XE/XE2). Ich fand es immer sehr angenehm die Properties zur Entwurfszeit schon dadurch unterscheiden zu können, was serialisiert (dann unter published) und was eben nicht gespeichert werden soll (public) zu trennen. Wüsste aber ehrlich gesagt nicht ob ich das heute noch immer so machen würde :-) Um auf deine Frage antworten zu können: einen Königsweg gibt es nicht und elegant und automatisiert kannst Du das per neuer und auch alter RTTI machen... Grüße |
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Zitat:
Zitat:
Zitat:
|
AW: Unterschied Sichtbarkeitsmodifikator 'Published' zu 'Public'
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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 by Thomas Breitkreuz