Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Getter und Setter eines Records inlinen? (https://www.delphipraxis.net/176159-getter-und-setter-eines-records-inlinen.html)

jaenicke 16. Aug 2013 09:53

AW: Getter und Setter eines Records inlinen?
 
Die Struktur ist überschaubar, du findest sie ab Zeile 563 in TTypeData in System.Typinfo.pas als Kommentar...
Davor steht noch der Name des Recordtyps als Shortstring, aber der Pointer auf die Typinfo zeigt auf den Record selbst.

In dieser Struktur findet sich die Property aber nicht. Deshalb ist es nicht ganz so einfach...

Stevie 16. Aug 2013 10:17

AW: Getter und Setter eines Records inlinen?
 
Zitat:

Zitat von jaenicke (Beitrag 1225094)
Die Struktur ist überschaubar, du findest sie ab Zeile 563 in TTypeData in System.Typinfo.pas als Kommentar...
Davor steht noch der Name des Recordtyps als Shortstring, aber der Pointer auf die Typinfo zeigt auf den Record selbst.

In dieser Struktur findet sich die Property aber nicht. Deshalb ist es nicht ganz so einfach...

Ich meinte eher woran du zu sehen glaubst, dass es RTTI für Properties eines Record Typs gibt, wenn es in der TypInfo.pas doch nur TRecordTypeField und TRecordTypeMethod gibt, welche in den records stehen (daher in Kommentaren, weil sie so in der abgelegten Binärform nicht in einem Record definiert werden können u.a. wegen den packed shortstrings)

Ich behaupte nämlich, auch im XE4 Compiler wird keine RTTI für Properties eines Record Typs generiert - lasse mich aber gern vom Gegenteil überzeugen.

JamesTKirk 25. Aug 2013 12:39

AW: Getter und Setter eines Records inlinen?
 
Zitat:

Zitat von Zacherl (Beitrag 1225009)
Habs mir grade mal in der Assembler-Ansicht angeschaut und wie es scheint werden die Properties korrekt inlined. Ich habe diese allerdings auch nicht als published, sondern als public deklariert (published funktioniert für Records auch überhaupt nicht, wie ich grade feststellen musste :-D). Soweit ich weiß werden doch nur published Properties per RTTI zugänglich gemacht oder nicht?

Ein kleiner Nachtrag bezüglich
Delphi-Quellcode:
inline
: Auch wenn Code als
Delphi-Quellcode:
inline
markiert ist und der Compiler auch tatsächlich entscheidet zu inlinen, bleibt der Code trotzdem als normal aufrufbare Funktion/Prozudur/Method vorhanden, da man ja auch Funktions-/Methodenzeiger verwenden könnte, um die Funktion aufzurufen. Inlinen geschieht auch unabhängig von der RTTI.

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr.
Seite 2 von 2     12   

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