Embarcadero Delphi
Verwendung von RTTI in Delphi
Suche…
Einführung
Delphi stellte vor mehr als einem Jahrzehnt Runtime Type Information (RTTI) bereit. Doch auch heute sind sich viele Entwickler der Risiken und Vorteile nicht voll bewusst.
Kurz gesagt, Runtime-Typ-Informationen sind Informationen zum Datentyp eines Objekts, der zur Laufzeit in den Speicher gesetzt wird.
Mit RTTI können Sie feststellen, ob der Typ eines Objekts dem Typ einer bestimmten Klasse oder einer ihrer Nachkommen entspricht.
Bemerkungen
RTTI IN DELPHI - ERKLÄRT
Die Laufzeit-Typinformationen in Delphi - kann dies alles für Sie tun? Artikel von Brian Long bietet eine großartige Einführung in die RTTI-Funktionen von Delphi. Brian erklärt, dass die RTTI-Unterstützung in Delphi in erster Linie hinzugefügt wurde, damit die Entwurfszeitumgebung ihre Arbeit erledigen kann, dass Entwickler jedoch auch die Möglichkeit haben können, bestimmte Code-Vereinfachungen zu erreichen. Dieser Artikel bietet auch einen guten Überblick über die RTTI-Klassen sowie einige Beispiele.
Beispiele sind: Lesen und Schreiben von beliebigen Eigenschaften, allgemeine Eigenschaften ohne gemeinsamen Vorfahren, Kopieren von Eigenschaften von einer Komponente in eine andere usw.
Grundlegende Klasseninformationen
In diesem Beispiel wird ClassType
, wie die Vorfahren einer Komponente mithilfe der ClassType
und ClassParent
Eigenschaften ClassType
werden. Es verwendet eine Schaltfläche Button1: TButton
und ein Listenfeld ListBox1: TListBox
in einem Formular TForm1
.
Wenn der Benutzer auf die Schaltfläche klickt, werden der Name der Klasse der Schaltfläche und die Namen der übergeordneten Klassen zum Listenfeld hinzugefügt.
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;
Das Listenfeld enthält die folgenden Zeichenfolgen, nachdem der Benutzer auf die Schaltfläche geklickt hat:
- TButton
- TButtonControl
- TWinControl
- TControl
- TComponent
- TPersistent
- TObject