Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI (https://www.delphipraxis.net/179666-warnung-w1055-published-verursachte-das-hinzufuegen-von-rtti.html)

Helmi 23. Mär 2014 17:21

Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Hallo,

ich hab grad einer Klasse einen PUBLISHED-Abschnitt spendiert (für Properties). Danach erhalte ich diese Warnung:
Zitat:

[DCC Warnung] ZusammenfassenUnit.pas(25): W1055 PUBLISHED verursachte das Hinzufügen von RTTI ($M+) zu Typ 'TZusammenfassen'
Aber ich versteh die Warnung nicht (auch nicht die Hilfe dazu).
Was ist so "gefährlich" einer Klasse einen PUBLISHED-Abschnitt zu verpassen?

himitsu 23. Mär 2014 17:24

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Die Warnung kenn ich jetzt auch noch nicht, aber ist die Klasse von TComponent TPersistent abgeleitet, oder wird sie sonstwie irgendwie serialisiert?

Wenn nein, dann ist Published eh nutzlos.


PS:
http://docs.embarcadero.com/products...ished_xml.html
http://docwiki.embarcadero.com/RADSt...e_%28Delphi%29
[add]
Und TComponent TPersistent wird auch mit {$M+} definiert.

DeddyH 23. Mär 2014 17:26

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Nix, aber wenn Du published-Properties deklarierst, werden RTTI-Infos hinzugefügt, nichts anderes besagt ja die Meldung. Siehe dazu auch http://docwiki.embarcadero.com/RADSt...n_%28Delphi%29

Uwe Raabe 23. Mär 2014 17:28

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Zitat:

Zitat von Helmi (Beitrag 1253135)
Hallo,

ich hab grad einer Klasse einen PUBLISHED-Abschnitt spendiert (für Properties). Danach erhalte ich diese Warnung:
Zitat:

[DCC Warnung] ZusammenfassenUnit.pas(25): W1055 PUBLISHED verursachte das Hinzufügen von RTTI ($M+) zu Typ 'TZusammenfassen'
Aber ich versteh die Warnung nicht (auch nicht die Hilfe dazu).
Was ist so "gefährlich" einer Klasse einen PUBLISHED-Abschnitt zu verpassen?

Es ist nicht gefährlich. Damit published funktioniert, muss $M+ gesetzt sein. Ist es das nicht, macht der Compiler das implizit und meldet das mit dieser Warnung.

Du kannst also diese Warnung ganz einfach vermeiden, wenn du {$M+} in die Zeile vor die Klassendeklaration schreibst.

Helmi 23. Mär 2014 17:30

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
also ich hab ne Klasse von class abgeleitet (also von TObject)

ich bin´s gewohnt properties immer unter published unter zu bringen, auch wenn eigentlich nichts "veröffentlich" wird.
vermutlich reicht es auch unter public

Stevie 23. Mär 2014 17:39

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Zitat:

Zitat von Helmi (Beitrag 1253135)
Was ist so "gefährlich" einer Klasse einen PUBLISHED-Abschnitt zu verpassen?

Der Punkt ist, dass der von dir geschriebene Code so nicht funktionieren würde (warum wurde ja schon gesagt) und der Compiler dir das freundlicherweise bereinigt hat - aber das macht er nicht einfach stillschweigend.

Helmi 23. Mär 2014 17:41

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Wohin legt man normalerweise bei Klassen dann die Properties?

Uwe Raabe 23. Mär 2014 17:43

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Zitat:

Zitat von Helmi (Beitrag 1253142)
Wohin legt man normalerweise bei Klassen dann die Properties?

Wenn sie von außen benutzbar sein sollen unter public.

Stevie 23. Mär 2014 17:44

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Grundsätzlich reicht public aus - wofür published ist, kannst du ja nachlesen - wobei das durch die enhanced RTTI seit Delphi 2010 auch nur noch bedingt gilt. Man kann auch public standardmäßig dynamisch auslesen. Nur bei Komponenten, die im Objektinspector ihre Eigenschaften auflisten sollen, braucht man published (der macht das nämlich noch "oldschool" und nicht über enhanced RTTI).

himitsu 23. Mär 2014 17:51

AW: Warnung W1055 PUBLISHED verursachte das Hinzufügen von RTTI
 
Worin?
Nach dem, wie sichtbar die Property sein sollen.

Code:
private    nur in der eigenen Klasse sichtbar
protected  auch in Ableitungen sichtbar
public     öffenlich sichtbar
published  für die (alte) RTTI sichtbar und somit für die Serialisierungsfunktionen (wird in der DFM gespeichert)
NUR sollte man beachten, daß innerhalb einer UNIT die Sichbarkeiten von private und ptotected wie public arbeiten, darum wurd nun Nachfolgendes eingeführt

Code:
private
strict private    wie private, aber wirklich nur in der eigenen Klasse sichtbar
protected
strict protected  wie protected, aber wirklich nur in der eigenen Klasse und den Ableitungen sichtbar
public
published


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz