Zoeken…


Invoering

Delphi heeft meer dan tien jaar geleden Runtime Type Information (RTTI) verstrekt. Toch zijn veel ontwikkelaars zich nog steeds niet helemaal bewust van de risico's en voordelen.

Kortom, Runtime Type Information is informatie over het gegevenstype van een object dat tijdens runtime in het geheugen wordt ingesteld.

RTTI biedt een manier om te bepalen of het type van een object van een bepaalde klasse of een van de afstammelingen is.

Opmerkingen

RTTI IN DELPHI - UITGESLOTEN

De runtime-type-informatie in Delphi - kan het iets voor u doen? artikel van Brian Long biedt een geweldige introductie tot de RTTI-mogelijkheden van Delphi. Brian legt uit dat de RTTI-ondersteuning in Delphi eerst en vooral is toegevoegd om de design-time omgeving zijn werk te laten doen, maar dat ontwikkelaars er ook gebruik van kunnen maken om bepaalde code-vereenvoudigingen te realiseren. Dit artikel biedt ook een goed overzicht van de RTTI-klassen, samen met enkele voorbeelden.

Voorbeelden zijn: lezen en schrijven van willekeurige eigenschappen, gemeenschappelijke eigenschappen zonder gemeenschappelijke voorouder, eigenschappen van de ene naar de andere component kopiëren, enz.

Basic Class Informatie

Dit voorbeeld laat zien hoe u de afkomst van een component kunt verkrijgen met behulp van de eigenschappen ClassType en ClassParent . Het gebruikt een knop Button1: TButton en een keuzelijst ListBox1: TListBox op een formulier TForm1 .

Wanneer de gebruiker op de knop klikt, worden de naam van de klasse van de knop en de namen van de bovenliggende klassen toegevoegd aan de keuzelijst.

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;

De keuzelijst bevat de volgende tekenreeksen nadat de gebruiker op de knop heeft geklikt:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow