Laufzeit-Typinformationen (Delphi)
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.