Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren (https://www.delphipraxis.net/183096-%7B%24rtti-explicit-methods-%5B%5D-properties-%5B%5D-fields-%5B%5D-%7D-allgemein-definieren.html)

Bernhard Geyer 11. Dez 2014 09:36

Delphi-Version: XE6

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Gibt es für oben genannte Defines eine Alternative als ein *.Inc-Datei die überall eingebunden wird?
Ich würde gern das allgemein für die Exe anwenden ohne das in die eigene Inc-Datei sowie die Inc-Dateien der 3th-Party-Komponenten aufnehmen zu müssen.

TiGü 11. Dez 2014 09:45

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
In die DPR!

http://stackoverflow.com/questions/2...603650#4603650

Bernhard Geyer 11. Dez 2014 10:01

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Das stimmt nicht!


Delphi-Quellcode:
{$WEAKLINKRTTI ON}

funktioniert in der dpr

Delphi-Quellcode:
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

funktiniert in der dpr nicht!

dGeek 11. Dez 2014 14:40

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Ich habe das gerade mal unter XE2 getestet und es funktioniert in der dpr.

Hat sich das XE2+ was geändert?

himitsu 11. Dez 2014 15:22

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Vor oder nach dem USES?

Im Allgemeinen gibt es Compilerdirektiven quasi als
* Programm-Globale (irgendwo in DPR/PAS und wirkt sich auf alles aus ... z.B.
Delphi-Quellcode:
{$M 123,456}
)
* Unit-Globale (irgendwo in Unit und wirkt sich danach auf alles der Unit aus)
* Lokale (ab da wo definiert, bis Unitende oder bis zur nächsten Definition)

Und ja, natürlich könnte der Compilerhersteller daran etwas ändern.

Stevie 11. Dez 2014 16:27

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Dass die $RTTI Direktive in der dpr Auswirkungen auf die gesamte Anwendung hatte, war ein Bug und der wurde mit XE6 behoben.

dGeek 11. Dez 2014 16:39

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Ein Bug, ok.

Reicht es denn auch, wenn man solche Direktiven in der Haupt-Unit deklariert?

Stevie 11. Dez 2014 16:51

AW: {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} allgemein definieren
 
Zitat:

Zitat von dGeek (Beitrag 1283110)
Ein Bug, ok.

Reicht es denn auch, wenn man solche Direktiven in der Haupt-Unit deklariert?

Nein, weil diese Direktive lokal ist - das heißt, sie wirkt sich nur auf die Unit aus, in der sie steht.

Dass sie das nicht tat, war ja der Bug. In der dpr stehend hat sie sich deshalb auf alle Units im Projekt ausgewirkt.
Aber auch wenn sie in einer Unit stand, wirkte sie sich auf die nachfolgend kompilierten Units aus.

Man hätte den Bug aber zugegebenermaßen auch geschickter fixen können, indem man sie in der dpr global hätte sein lassen, in Units aber nur lokal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.

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