Quelle est la différence entre public et publié les membres de la classe en Delphi?
Svp quelqu'un pourrait-il m'expliquer quelle est la différence entre public et publié les membres de la classe en Delphi?
J'ai essayé de regarder à Delphes aider et je comprends que ces membres ont la même visibilité, mais je ne comprends pas très bien comment ils diffèrent et quand dois-je utiliser publiée membres au lieu de celles du public.
Merci beaucoup.
Vous devez vous connecter pour publier un commentaire.
Propriétés publiques et publié les propriétés ont la même visibilité, comme vous l'avez déjà dit. Publié propriétés sont inclus dans le RTTI, propriétés publiques ne le sont pas.
Le compilateur génère RTTI (Run-Time Type Information) des métadonnées publiés par les membres, mais pas pour le public et les membres (par défaut). Le principal effet de cette est que les propriétés d'un objet apparaît dans l'Inspecteur d'Objet au moment de la conception.
Je ne sais pas si vous êtes de l'écriture de composants, mais si vous le faites, vous savez probablement que les propriétés et les événements sont normalement publiées, de sorte qu'ils peuvent être définies à l'aide de l'Inspecteur d'Objet.
Public
MyProperty
sera pas être visible dans l'Inspecteur d'Objet.Publié
MyProperty
sera visible dans l'Inspecteur d'Objet.Comme une note de côté, il y a une autre chose de particulier publiée:
La de visibilité par défaut de membres de la classe est
published
, afin de vérifier le code unsafe comme:Name
,Password
etDecryptPassword()
sont visibles 'le monde'.Publié les propriétés de l'exportation d'Exécution d'Informations de Type (RTTI).
Ont un look ici sur RTTI en Delphi
Il semble qu'il y a beaucoup de bonnes réponses déjà, en soulignant l'Inspecteur d'Objet, RTTI,
etc. Ce sont toutes les pièces du puzzle.
Si vous prenez la publication de mot-clé, l'ensemble de Delphi RAD conception de l'outil nécessiterait un moyen de spécifier les propriétés sont stockées dans une DFM, inspectés dans le composant de l'inspecteur propriétés, et peut être rechargée à l'exécution d'un DFM lorsque la forme ou le module de données est créé.
Ce, en un mot, c'est que ce qui est Publié est pour. Il est intéressant pour moi que les concepteurs de l'intervalle QT (à l'origine de TrollTech, plus tard partie de Nokia, plus tard encore, le spin off de Digia) avaient pour émuler ce niveau de RTTI pour le C++ RAD bibliothèque "QT", l'ajout d'un "publié" l'équivalent, et une "propriété" équivalent, alors que C++ pur manque encore de cette installation.
Runtime Type d'Informations (RTTI) ne sont générés que pour
published
les membres de la classe.Au moment de l'exécution, les entrées dans les publications et les sections publiques sont également accessibles.
La principale différence entre eux est que publié éléments d'un composant apparaissent dans la Inspecteur d'Objet au moment de la conception.
Cela se produit parce que, pour les champs publié le chapitre RTTI est généré automatiquement.
L'Inspecteur d'Objet capte et utilise pour identifier ce qu'il faut ajouter à sa liste de propriétés et d'événements.
En plus des autres réponses:
Publié propriétés sont automatiquement enregistrées par le système de streaming.
Par exemple, si vous avez un TComponent descendant de l'instance et de l'écrire sur un TStream avec WriteComponent, tous les (enfin, pas tous, mais c'est une autre question) publié propriétés sont écrites dans le flux sans autre codage.
Bien sûr, le système de streaming ne peut faire que parce que le RTTI est disponible pour ceux propriétés publiées.