Buscar..


Introducción

Delphi proporcionó información de tipo de tiempo de ejecución (RTTI) hace más de una década. Sin embargo, incluso hoy en día, muchos desarrolladores no son plenamente conscientes de sus riesgos y beneficios.

En resumen, la información de tipo de tiempo de ejecución es información sobre el tipo de datos de un objeto que se configura en la memoria en tiempo de ejecución.

RTTI proporciona una manera de determinar si el tipo de un objeto es el de una clase en particular o uno de sus descendientes.

Observaciones

RTTI EN DELPHI - EXPLICADO

La información de tipo de tiempo de ejecución en Delphi: ¿puede hacer algo por usted? El artículo de Brian Long proporciona una excelente introducción a las capacidades RTTI de Delphi. Brian explica que el soporte RTTI en Delphi se agregó primero y principalmente para permitir que el entorno de tiempo de diseño haga su trabajo, pero que los desarrolladores también pueden aprovecharlo para lograr ciertas simplificaciones de código. Este artículo también proporciona una gran visión general de las clases RTTI junto con algunos ejemplos.

Los ejemplos incluyen: leer y escribir propiedades arbitrarias, propiedades comunes sin ancestros comunes, copiar propiedades de un componente a otro, etc.

Información básica de la clase

Este ejemplo muestra cómo obtener la ascendencia de un componente utilizando las propiedades ClassType y ClassParent . Utiliza un botón Button1: TButton y un cuadro de lista ListBox1: TListBox en un formulario TForm1 .

Cuando el usuario hace clic en el botón, el nombre de la clase del botón y los nombres de las clases principales se agregan al cuadro de lista.

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;

El cuadro de lista contiene las siguientes cadenas después de que el usuario haga clic en el botón:

  • TButton
  • Control de TButton
  • TWinControl
  • TControl
  • TComponente
  • TPersistente
  • Objeto


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow