Ricerca…


introduzione

Delphi ha fornito Runtime Type Information (RTTI) più di dieci anni fa. Eppure ancora oggi molti sviluppatori non sono pienamente consapevoli dei suoi rischi e benefici.

In breve, le informazioni sul tipo di runtime sono informazioni sul tipo di dati di un oggetto che viene impostato in memoria in fase di esecuzione.

RTTI fornisce un modo per determinare se il tipo di un oggetto è quello di una particolare classe o di uno dei suoi discendenti.

Osservazioni

RTTI IN DELPHI - SPIEGATO

Le informazioni di tipo run-time in Delphi - può fare nulla per te? l'articolo di Brian Long fornisce un'ottima introduzione alle funzionalità RTTI di Delphi. Brian spiega che il supporto RTTI in Delphi è stato aggiunto innanzitutto per consentire all'ambiente in fase di progettazione di svolgere il proprio lavoro, ma che gli sviluppatori possono anche trarne vantaggio per ottenere alcune semplificazioni del codice. Questo articolo fornisce anche una grande panoramica delle classi RTTI insieme ad alcuni esempi.

Gli esempi includono: Lettura e scrittura di proprietà arbitrarie, proprietà comuni senza antenato comune, copia delle proprietà da un componente a un altro, ecc.

Informazioni di base sulla classe

Questo esempio mostra come ottenere l'ascendenza di un componente utilizzando le proprietà ClassType e ClassParent . Utilizza un pulsante Button1: TButton e una casella di ListBox1: TListBox su un modulo TForm1 .

Quando l'utente fa clic sul pulsante, il nome della classe del pulsante e i nomi delle sue classi parent vengono aggiunti alla casella di riepilogo.

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 casella di riepilogo contiene le seguenti stringhe dopo che l'utente fa clic sul pulsante:

  • TButton
  • TButtonControl
  • TWinControl
  • TControl
  • TComponent
  • TPersistent
  • TObject


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow