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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow