AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi RTTI-Informationen zur Laufzeit erstellen?
Thema durchsuchen
Ansicht
Themen-Optionen

RTTI-Informationen zur Laufzeit erstellen?

Ein Thema von FredlFesl · begonnen am 1. Jul 2011 · letzter Beitrag vom 23. Aug 2011
Antwort Antwort
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#1

RTTI-Informationen zur Laufzeit erstellen?

  Alt 1. Jul 2011, 19:30
Delphi-Version: 2007
Hi,

Eine Anwendung extrahiert zur Laufzeit RTTI-Informationen aus einer Klassenfamilie. Diese Klassenfamilie repräsentiert externe Daten.
Die Informationen werden in Dropdown-Listen dargestellt, damit wird etwas ähnliches wie ein Databinding auf Objektbasis implementiert.

Ändert sich die Struktur der externen Daten, wird ein Codegenerator angeschmissen, der eine neue Unit mit eben dieser Klassenfamilie erzeugt. Daraufhin wird das Programm neu kompiliert und schlußendlich steht die neue Information als RTTI im Programm zur Verfügung.

Kann man das auch zur Laufzeit machen? Könnte ich also die Struktur zur Laufzeit einlesen und die RTTI-Tabellen per Hand zusammenbauen, sodaß man den Unterschied gar nicht merkt?
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 1. Jul 2011, 20:21
Vielleicht ist dies im Zusammenhang hiermit ja hilfreich?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#3

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 1. Jul 2011, 20:25
Bingo. Schau ich mir am Montag genauer an. Das sollte es sein...
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 2. Jul 2011, 02:38
damit wird etwas ähnliches wie ein Databinding auf Objektbasis implementiert.
Heisst das dann, dass die Klassen eigentlich nur aus published Properties bestehen?
Also ungefähr so:
Delphi-Quellcode:
TGenerierteKlasse=class(TObject)
published
  property ArtikelName:String; // das read & write schenk ich mir in diesem Beispiel
  property Gewicht:Double;
  property Preis:Currency;
...
end;
Die Klasse besteht dann nur aus Properties, die man über RTTI abfragen kann.

Sollte dem so sein, dann gibt es andere Möglichkeiten (ohne RTTI) die besser funktionieren und keine programmiertechnischen Tricks (RTTI zur Laufzeit erzeugen) benötigen.
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#5

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 4. Jul 2011, 20:38
Die Klasse besteht dann nur aus Properties, die man über RTTI abfragen kann.
Sollte dem so sein, dann gibt es andere Möglichkeiten (ohne RTTI) die besser funktionieren und keine programmiertechnischen Tricks (RTTI zur Laufzeit erzeugen) benötigen.
Ich meine, schon. Das Problem ist, das wir eine bestehende Anwendung haben, die die Informationen -denke ich- per RTTY ermittelt.
Auf jeden Fall ist es so, das derzeit die Klassenfamilie per Codegenerator erstellt und in eine BPL reinkompiliert wird. die dient dann als 'Quelle' der Datenverbindungen. Sobald ich mir den Code angeschaut habe, weiss ich mehr.

Welche 'anderen' Möglichkeiten gäbe es denn?
Das Bild hängt schief.
  Mit Zitat antworten Zitat
martin_

Registriert seit: 19. Mai 2008
Ort: Österreich
89 Beiträge
 
#6

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 23. Aug 2011, 13:21
Hallo,
habe das gleiche Problem wie in #4 beschrieben.

[QUOTE=sx2008;1109543]
Sollte dem so sein, dann gibt es andere Möglichkeiten (ohne RTTI) die besser funktionieren und keine programmiertechnischen Tricks (RTTI zur Laufzeit erzeugen) benötigen.
Wie lässt sich das lösen?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 23. Aug 2011, 13:44
Die RTTI sind keine Tricks.
Ab D2010 sind sie sehr leistungsfähig und in Verbindung mit Attributen sehr nützlich, um Klassen und Objekte zu analysieren und zu serialisieren.
Daniel hatte ein interessantes Video zu D2010 und ist auch auf diese Themen genauer eingegangen.
Wenn Du ein älteres Delphi hast, wird es schwieriger.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
martin_

Registriert seit: 19. Mai 2008
Ort: Österreich
89 Beiträge
 
#8

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 23. Aug 2011, 14:03
Ja, Delphi 2010.
Dort
http://www.delphipraxis.net/140771-d...idiver%99.html
funktioniert leider der Link nicht.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: RTTI-Informationen zur Laufzeit erstellen?

  Alt 23. Aug 2011, 14:09
Wer traut sich, mit dem Chef zu schimpfen?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:57 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