AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Felder einer Klasse zur Laufzeit erkennen

Ein Thema von idefix2 · begonnen am 20. Apr 2017 · letzter Beitrag vom 21. Apr 2017
Antwort Antwort
Seite 1 von 2  1 2   
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.000 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Felder einer Klasse zur Laufzeit erkennen

  Alt 20. Apr 2017, 16:20
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.

Geändert von idefix2 (20. Apr 2017 um 16:24 Uhr)
  Mit Zitat antworten Zitat
nahpets

Registriert seit: 11. Okt 2006
2.730 Beiträge
 
Delphi 7 Professional
 
#2

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 20. Apr 2017, 16:43
Ja, nennt sich Hier im Forum suchenRTTI / Laufzeitinformationen.

Mindestens seit Delphi 7.

Delphi-Referenz durchsuchenRTTI
Bei Google suchenDelphi RTTI
Stephan
Weil die Lichtgeschwindigkeit höher als die Schallgeschwindigkeit ist, hält man viele Leute für helle Köpfe, bis man sie reden hört.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.000 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 20. Apr 2017, 18:02
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.

Geändert von idefix2 (20. Apr 2017 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.288 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 20. Apr 2017, 18:10
Die Unit heißt TypInfo, die erweiterte RTTI wurde erst mit Delphi 2010 eingeführt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
4.733 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#5

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 20. Apr 2017, 18:11
Für published Properties tut es auch die alte RTTI. Hier wäre für sich die Unit TypInfo.pas und dort die Methode GetPropList von Interesse.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
nahpets

Registriert seit: 11. Okt 2006
2.730 Beiträge
 
Delphi 7 Professional
 
#6

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 20. Apr 2017, 18:15
In Delphi 7 ist's die Unit TypInfo.
Stephan
Weil die Lichtgeschwindigkeit höher als die Schallgeschwindigkeit ist, hält man viele Leute für helle Köpfe, bis man sie reden hört.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.000 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 01:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
32.594 Beiträge
 
Delphi XE3 Professional
 
#8

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 05:54
Das hast du bestimmt falsch verstanden.

Tipp: Schau mal in SetName von TComponent.
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 )

Tipp2: Schau mal was für Methoden das TObjekt besitzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (21. Apr 2017 um 06:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
4.733 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#9

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 08:09
Die VCL setzt gleichnamige Felder im Owner
... solange diese Felder published sind.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.000 Beiträge
 
RAD-Studio 2009 Pro
 
#10

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 11:25
Genau daran scheitert es ja. In der published Section kann ich ja offenbar keine einfachen Variablen deklarieren.
Miniaturansicht angehängter Grafiken
problem.png  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf