![]() |
Felder einer Klasse zur Laufzeit erkennen
Hallo!
Ist es möglich - und falls ja, ab welcher Delphi Version - Namen und Typ der Felder einer Klasse zur Laufzeit des Programms festzustellen? Ein Beschränkung auf die pubished Felder (gibt es das bei allen Klassen oder nur bei von TComponent abgeleiteten Klassen), auf die ja Design Zeit der Zugriff von "außen" möglich ist, würde nicht stören. |
AW: Felder einer Klasse zur Laufzeit erkennen
|
AW: Felder einer Klasse zur Laufzeit erkennen
Kannst du mir sagen, welche Units in Delphi 2009 (wohl deutlich jünger als Delphi 7) eingebunden werden müssen, damit das funktioniert?
Die Unit System.rtti gibt es da natürlich noch nicht, aber auch eine Unit RTTI suche ich vergeblich. |
AW: Felder einer Klasse zur Laufzeit erkennen
Die Unit heißt TypInfo, die erweiterte RTTI wurde erst mit Delphi 2010 eingeführt.
|
AW: Felder einer Klasse zur Laufzeit erkennen
Für published Properties tut es auch die alte RTTI. Hier wäre für sich die Unit TypInfo.pas und dort die Methode
![]() |
AW: Felder einer Klasse zur Laufzeit erkennen
In Delphi 7 ist's die Unit TypInfo.
|
AW: Felder einer Klasse zur Laufzeit erkennen
Danke, ich werde mich jetzt etwas damit spielen.
So, wie ich das verstanden habe, kann man damit zur Laufzeit nur Property-Namen und Eigenschaften, aber nicht die Namen und Eigenschaften von Feldern herausfinden. Kann man mit der neuen RTTI auch die Feldnamen von Klassen abfragen? Ich habe darauf leider momentan keinen Zugriff, das Delphi Berlin Starter habe ich fürs erste wegen Inkompatibilität mit meinen alten Projekten und Delphi 2009 wieder deaktivieren müssen - mein Delphi 2009 Professional brauche ich schon allein aus Lizenzgründen, und das verträgt sich leider nicht mit dem Delphi Berlin - und bin noch nicht dazugekommen, mir das auf einer VM zu installieren. |
AW: Felder einer Klasse zur Laufzeit erkennen
Das hast du bestimmt falsch verstanden. :angle2:
Tipp: Schau mal in SetName von TComponent. :zwinker: Die VCL setzt gleichnamige Felder im Owner, wenn man eine Komponente erstellt/löscht/umbenennt. Darum sind diese Felder auch mit den Objektinstanzen gefüllt, wenn man Komponenten auf die Form pappt. (die VCL ist nur saudoof, prüft den Typ nicht und es macht Spaß wenn zufällig was ganz Anderes gleich heißt :stupid:) Tipp2: Schau mal was für Methoden das TObjekt besitzt. |
AW: Felder einer Klasse zur Laufzeit erkennen
Zitat:
|
AW: Felder einer Klasse zur Laufzeit erkennen
Liste der Anhänge anzeigen (Anzahl: 1)
Genau daran scheitert es ja. In der published Section kann ich ja offenbar keine einfachen Variablen deklarieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz