Recherche…


Introduction

Delphi a fourni des informations de type d'exécution (RTTI) il y a plus de dix ans. Pourtant, même aujourd'hui, de nombreux développeurs ne sont pas pleinement conscients de ses risques et de ses avantages.

En bref, les informations sur le type d'exécution sont des informations sur le type de données d'un objet qui est défini en mémoire au moment de l'exécution.

RTTI permet de déterminer si le type d'un objet est celui d'une classe particulière ou de l'un de ses descendants.

Remarques

RTTI IN DELPHI - EXPLIQUÉ

L' information sur le type d'exécution dans Delphi - Peut-il faire quelque chose pour vous? L'article de Brian Long constitue une excellente introduction aux fonctionnalités RTTI de Delphi. Brian explique que la prise en charge de RTTI dans Delphi a été ajoutée avant tout pour permettre à l’environnement de conception de faire son travail, mais que les développeurs peuvent également en tirer parti pour obtenir certaines simplifications de code. Cet article fournit également un excellent aperçu des classes RTTI avec quelques exemples.

Exemples: lecture et écriture de propriétés arbitraires, propriétés communes sans ancêtre commun, copie des propriétés d'un composant à un autre, etc.

Informations de base sur la classe

Cet exemple montre comment obtenir l'ascendance d'un composant à l'aide des propriétés ClassType et ClassParent . Il utilise un bouton Button1: TButton et une zone de liste ListBox1: TListBox sur un formulaire TForm1 .

Lorsque l'utilisateur clique sur le bouton, le nom de la classe du bouton et les noms de ses classes parentes sont ajoutés à la liste.

procedure TForm1.Button1Click(Sender: TObject) ;
var
  ClassRef: TClass;
begin
   ListBox1.Clear;
   ClassRef := Sender.ClassType;
   while ClassRef <> nil do
   begin
     ListBox1.Items.Add(ClassRef.ClassName) ;
     ClassRef := ClassRef.ClassParent;
   end;
end;

La zone de liste contient les chaînes suivantes après que l'utilisateur clique sur le bouton:

  • TButton
  • TButtonControl
  • TWinControl
  • TControl
  • Composant
  • TPersistent
  • TObject


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow