Embarcadero Delphi
Med RTTI i Delphi
Sök…
Introduktion
Delphi tillhandahöll Runtime Type Information (RTTI) för mer än ett decennium sedan. Än idag är många utvecklare inte helt medvetna om dess risker och fördelar.
Kort sagt, Runtime Type Information är information om ett objekts datatyp som ställs in i minnet vid körning.
RTTI tillhandahåller ett sätt att avgöra om ett objekts typ är den för en viss klass eller en av dess ättlingar.
Anmärkningar
RTTI I DELPHI - FÖRKLARAT
Information om körtidstyp i Delphi - Kan det göra något för dig? artikel av Brian Long ger en bra introduktion till RTTI-kapaciteten i Delphi. Brian förklarar att RTTI-stödet i Delphi först och främst har lagts till för att designmiljön ska kunna göra sitt jobb, men att utvecklare också kan dra nytta av det för att uppnå vissa kodförenklingar. Den här artikeln ger också en bra översikt över RTTI-klasserna tillsammans med några exempel.
Exempel inkluderar: Läsa och skriva godtyckliga egenskaper, vanliga egenskaper utan gemensam förfader, kopiera egenskaper från en komponent till en annan, etc.
Grundläggande klassinformation
Det här exemplet visar hur man får en härkomst till en komponent med ClassType
och ClassParent
. Den använder en knapp Button1: TButton
och en ListBox1: TListBox
på ett formulär TForm1
.
När användaren klickar på knappen läggs namnet på knappens klass och namnen på dess överordnade klasser till listrutan.
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;
Listrutan innehåller följande strängar när användaren klickar på knappen:
- TButton
- TButtonControl
- Twincontrol
- TCONTROL
- TComponent
- TPersistent
- TObject