Informations de type à l'exécution (Object Pascal)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Object Pascal - Index

Type

Commutateur

Syntaxe

{$M+} ou {$M-}

{$TYPEINFO ON} ou {$TYPEINFO OFF}

Par défaut

{$M-}

{$TYPEINFO OFF}

Portée

Locale



La directive de commutateur {$M} contrôle la génération d'informations de type à l'exécution (RTTI). Quand une classe est déclarée dans l'état {$M+} ou dérivée d'une classe qui était déclarée dans l'état {$M+}, le compilateur génère des informations de type à l'exécution pour les propriétés et les événements déclarés dans une section publiée. Si une classe est déclarée dans l'état {$M+} et si elle n'est pas dérivée d'une classe qui a été déclarée dans l'état {$M}, les sections publiées ne sont pas autorisées dans la classe. Notez que, si une classe est déclarée forward, la première déclaration de la classe doit être déclarée avec le commutateur $M.

Quand le commutateur $M est utilisé pour déclarer une interface, le compilateur génère les informations de type à l'exécution pour toutes les propriétés. Donc, pour les interfaces, tous les membres sont traités comme s'ils étaient publiés.

Remarque : La classe TPersistent définie dans l'unité Classes de la bibliothèque de composants est déclarée dans l'état {$M+}. Toute classe dérivée de TPersistent aura donc des informations RTTI générées pour ses sections publiées. La bibliothèque de composants utilise les informations de type à l'exécution générées pour les sections publiées afin d'accéder aux valeurs des propriétés d'un composant lors de la sauvegarde ou du chargement des fichiers fiche. En outre, les informations de type à l'exécution relatives à un composant sont aussi utilisées par l'EDI pour déterminer la liste des propriétés à afficher dans l'inspecteur d'objets.

Remarque : L'interface IInvokable définie dans l'unité System est déclarée dans l'état {$M+}. Toute classe dérivée de IInvokable aura donc des informations RTTI générées. Les routines de l'unité IntfInfo peuvent être utilisées pour récupérer les informations RTTI.

Il est très rare qu'une application utilise directement le commutateur {$M} du compilateur.

Voir aussi