Informations de type à l'exécution (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Delphi - Index

Type

Commutateur

Syntaxe

{$M+} ou {$M-}

{$TYPEINFO ON} ou {$TYPEINFO OFF}

Par défaut

{$M-}

{$TYPEINFO OFF}

Portée

Locale



La directive par commutateur {$M} contrôle la génération d'informations de type accessibles à l'exécution (RTTI). Lorsqu'une classe est déclarée en mode {$M+} ou dérivée d'une classe qui était déclarée en mode {$M+}, le compilateur génère des informations de type pour les propriétés et les événements déclarés dans les sections publiées de cette classe. Si une classe est déclarée en mode {$M+} et si elle ne dérive pas d'une classe qui a été déclarée en mode {$M}, les sections publiées sont interdites pour cette 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.

Lorsque le commutateur $M est utilisé pour déclarer une interface, le compilateur génère les informations de types à 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 a été déclarée en mode {$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 accessibles à l'exécution et 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, l'EDI utilise les informations de type accessibles à l'exécution 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 a été déclarée en mode {$M+}. Toute classe dérivée de IInvokable aura donc des informations RTTI générées. Les routines de l'unité IntfInfo peuvent servir à extraire les RTTI.

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

Voir aussi