Laufzeit-Typinformationen (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Liste der Delphi-Compiler-Direktiven - Index

Typ

Option

Syntax

{$M+} oder {$M-}

{$TYPEINFO ON} oder {$TYPEINFO OFF}

Vorgabe

{$M-}

{$TYPEINFO OFF}

Bereich

Lokal


Die Compiler-Direktive {$M} steuert die Erzeugung der Laufzeit-Typinformationen (RTTI). Wenn eine Klasse im Status {$M+} deklariert wurde oder von einer Klasse abgeleitet ist, die im Status {$M+} deklariert wurde, erzeugt der Compiler Laufzeit-Typinformationen für Felder, Methoden und Eigenschaften, die in einem published-Abschnitt deklariert sind. Ist eine Klasse im Status {$M+} deklariert und nicht von einer Klasse abgeleitet, die im Status {$M} deklariert wurde, sind published-Abschnitte in dieser Klasse nicht erlaubt. Wenn eine Klasse als forward deklariert ist, muss in der ersten Klassendeklaration $M angegeben werden.

Wenn eine Schnittstelle mit dem Schalter $M deklariert wird, erzeugt der Compiler für alle Eigenschaften und Methoden Laufzeit-Typinformationen. Daher werden bei Schnittstellen alle Elemente so behandelt, als ob sie als published deklariert sind.

Anmerkung: Die in der Unit Classes der Komponentenbibliothek definierte Klasse TPersistent ist im Status {$M+} deklariert. Aus diesem Grund werden für alle published-Abschnitte einer von TPersistent abgeleiteten Klasse Laufzeit-Typinformationen generiert. Die Komponentenbibliothek verwendet diese Informationen beim Speichern oder Laden von Formulardateien für den Zugriff auf die Werte der Komponenteneigenschaften. In der IDE wird anhand der Laufzeit-Typinformationen die Liste der im Objektinspektor angezeigten Eigenschaften festgelegt.

Anmerkung: Die in der Unit System definierte Schnittstelle IInvokable ist im Status {$M+} deklariert. Daher werden für alle von IInvokable abgeleiteten Schnittstellen Laufzeit-Typinformationen generiert. Mithilfe der Routinen in der Unit IntfInfo kann auf die Typinformationen zugegriffen werden.

Die direkte Verwendung der Direktive {$M} ist in einer Anwendung nur sehr selten erforderlich.

Siehe auch