Delphi provided Runtime Type Information (RTTI) more than a decade ago. Yet even today many developers aren't fully aware of its risks and benefits.
In short, Runtime Type Information is information about an object's data type that is set into memory at run-time.
RTTI provides a way to determine if an object's type is that of a particular class or one of its descendants.
RTTI IN DELPHI - EXPLAINED
The Run-Time Type Information In Delphi - Can It Do Anything For You? article by Brian Long provides a great introduction to the RTTI capabilities of Delphi. Brian explains that the RTTI support in Delphi has been added first and foremost to allow the design-time environment to do its job, but that developers can also take advantage of it to achieve certain code simplifications. This article also provides a great overview of the RTTI classes along with a few examples.
Examples include: Reading and writing arbitrary properties, common properties with no common ancestor, copying properties from one component to another, etc.
Basic Class Information
This example shows how to obtain the ancestry of a component using the
ClassParent properties. It uses a button
Button1: TButton and a list box
ListBox1: TListBox on a form
When the user clicks the button, the name of the button’s class and the names of its parent classes are added to the list box.
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;
The list box contains the following strings after the user clicks the button: