AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Felder einer Klasse zur Laufzeit erkennen

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

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 12:27
Genau daran scheitert es ja. In der published Section kann ich ja offenbar keine einfachen Variablen deklarieren.
Getter und Setter!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#12

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 12:39
Das was Du da machst gehört nach private.

Bei published steht dann sowas in der Art:
Delphi-Quellcode:
published
  property s1 : String read fs1 write fs1;
  property i1 : Integer read fi1 write SetI1;
  property r1 : Real read GetR1 write SetR1;
Die entsprechenden Getter und Setter müssen dann auch noch implementiert werden.

Was Du wo benötigst, ist von der Aufgabe abhängig, hier im Beispiel stehen halt nur ein paar Möglichkeiten zur Implementierung.

Wenn die Propertys nicht im Objektinspektor zu sehen sein müssen, können sie auch im Abschnitt public stehen. Auch dort sind sie über RTTI auffindbar und ausles- bzw. beschreibbar.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#13

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 13:02
Genau daran scheitert es ja. In der published Section kann ich ja offenbar keine einfachen Variablen deklarieren.
Funktioniert es denn nicht mit Properties?

(Edit: Hatte übersehen, dass es auf Seite 2 schon Antworten dazu gab.)

Geändert von Olli73 (21. Apr 2017 um 13:05 Uhr)
  Mit Zitat antworten Zitat
idefix2

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

AW: Felder einer Klasse zur Laufzeit erkennen

  Alt 21. Apr 2017, 13:43
Funktioniert es denn nicht mit Properties?
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.




Bei published steht dann sowas in der Art:
Delphi-Quellcode:
published
  property s1 : String read fs1 write fs1;
  property i1 : Integer read fi1 write SetI1;
  property r1 : Real read GetR1 write SetR1;
Die entsprechenden Getter und Setter müssen dann auch noch implementiert werden.

Was Du wo benötigst, ist von der Aufgabe abhängig, hier im Beispiel stehen halt nur ein paar Möglichkeiten zur Implementierung.
Das ist mir schon klar. Nur wozu das ganze Gedöns mit private Variablen und pubished properties gut sein soll, wenn keine Getter und Setter verwendet werden (und von der Aufgabenstellung her auch in Zukunft nicht nötig sein werden), erschließt sich mir nicht. Es gibt sicher Situationen, in denen das sinnvoll ist, aber dass es nicht direkt geht, ist eher lästig.

Wenn die Propertys nicht im Objektinspektor zu sehen sein müssen, können sie auch im Abschnitt public stehen. Auch dort sind sie über RTTI auffindbar und ausles- bzw. beschreibbar.
Mit RTTI vielleicht, in Delphi 2009 geht das aber offenbar nicht. Da finde ich nur die published properties.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz