__automated

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste alphabétique des mots clés - Index


Catégorie

Extensions des mots clés

Syntaxe

_automated: <declarations>

Description

Les règles de visibilité pour les membres automatisés sont les mêmes que celles s'appliquant aux membres publics. La seule différence entre les membres automatisés et publics consiste en l'information OLE automation qui est générée pour les fonctions et propriétés membre déclarées dans une section automated. Cette information de type OLE automation rend possible la création de serveurs OLE automation.

  • Pour une fonction membre, les types de tous les paramètres et le résultat éventuel de la fonction doivent être automatisables. De même, pour une propriété, le type de la propriété et les types de tous les paramètres de propriété de tableau doivent être automatisables. Les types automatisables sont : Currency, OleVariant, DelphiInterface, double, int, float, short, String, TDateTime, Variant et unsigned short. La déclaration de fonctions membres ou de propriétés utilisant des types non automatisables dans une section __automated provoque une erreur à la compilation.
  • Les déclarations de fonctions membres doivent utiliser la convention d'appel __fastcall.
  • Les fonctions membres peuvent être virtuelles.
  • Les fonctions membres peuvent ajouter __dispid(constant int expression) après la parenthèse fermante de la liste de paramètres.
  • Les déclarations de propriétés ne peuvent inclure que des spécificateurs d'accès (__dispid, read et write). Aucun autre spécificateur (index, stored, default, nodefault) n'est autorisé.
  • Les spécificateurs d'accès aux propriétés doivent lister un identificateur de fonction membre. Les identificateurs de données membre ne sont pas autorisés.
  • Les fonctions membres d'accès aux propriétés doivent utiliser la convention d'appel __fastcall.
  • Les redéfinitions de propriétés (déclarations de propriétés n'incluant pas le type de propriété) ne sont pas autorisées.

Exemple

class Test : public System::TObject
{
__automated:
  int __fastcall getI(void) __dispid(4);
  __property int I = {read=getI, dispid=3};
};

Voir aussi