AGB  ·  Datenschutz  ·  Impressum  







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

RTTI-Umfrage/Erfahrungen?

Ein Thema von himitsu · begonnen am 4. Mai 2014 · letzter Beitrag vom 7. Jan 2015
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.313 Beiträge
 
Delphi 12 Athens
 
#1

RTTI-Umfrage/Erfahrungen?

  Alt 4. Mai 2014, 23:24
Moin,

hier geht es jetzt mal nicht um was Wichtiges/Schlimmes.
Ich wollte einfach nur mal soeinen kleinen Überblick erlangen, in wie weit eigentlich die RTTI verwendet wird.

Wer nutzt denn die RTTI?
Vorallem wie oft, in welchem Umfang und wofür eigentlich?
Lieber die Alte, oder doch eher die Neue/Erweiterte? (hier ist, für ältere Delphis, die Antwort schon klar)

Die alte RTTI ist oftmals leichtgewichtiger/flotter und nicht alles der alten RTTI findet sich (genauso einfach) in der neuen erweiterten RTTI.
Die neue RTTI hat mit Multithreading eventuell einige Problemchen (da werden globale Instanzen verwendet), während die Alte meist nur blind direkt auf schreibgeschützten Pointern arbeitet und da praktisch nichts passieren kann.

* Daten/Objekte (de)derialisieren, für Speicherung/übertragung
- über die alte RTTI aus System/TObject/TypInfo, sowie TReader/Writer (das nutzt auch immernoch die VCL) und Teilweise auch im Variant (wobei dort oft auch einfach hart gecastet wird)
- oder nur noch mit der neuen RTTI.pas (TRttiContext)

* Hacking/Bugfixing
- via RTTI
- über doofe Zeiger "blind" zugreifen

* als zusätzliche Informationsquelle, um die Dokumentation zu ergänzen

* als Hilfe zum Debuggen
- TVirtualMethodInterceptor
- Zugriffe und Daten überwachen/auslesen

...




Und nun noch ein kleiner neugieriger Blick in die IDE, den die RTTI lässt sich ja nicht nur im eigenen Programm benutzen.

Da speichert die RTTI standardmäig jede Kleinigkeit, außer da, wo sie doch praktisch wäre. (bei Interfaces, wenn nicht explizit mit {$M+} deklariert)
Von fast 8500 Interfaces besitzen nur 40 ein paar mehr Infos (wie z.B. Name und Deklaration der Methoden), als nur die IID (GUID), Unit der Deklaration und die Anzahl der Methoden.


Aber witzig ist, daß die gesamte RTTI der Delphi XE3 Prof-RTL/VCL/FMX/IDE als Text nur 21 MB groß ist und schlappe 40800 Typen umfasst, davon etwa 17000 Klassen und 8500 Interfaces.
Im RAD Studio XE6 Architekt Trial sind es 23 MB und genau 46000 Typen (inkl. meiner 2 Test-Interfaces), davon 11444 Interfaces ohne und 7 mit Methoden-RTTI. (das Fehlende waren zufällig die MSXML6-Interfaces in einer gewissen DevJET_DI_XE3_Express.dll)


Nja, ein passendes Interface hab ich wenigstens gefunden, für eine geplante IDE-Erweiterung ... jetzt nur noch rausfinden, wie man es genau benutzt, denn es gibt nirgendwo Infos. Google kennt nur 2 Steiten, wo das Interface zufällig in einem Stacktrace auftaucht und die 2 Kommentare der OpenToolsAPI sind eher als spärlich zu bezeichnen. (aber das ist hier erstmal egal)
Angehängte Grafiken
Dateityp: jpg Unbenannt.jpg (196,9 KB, 68x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Mai 2014 um 23:35 Uhr)
  Mit Zitat antworten Zitat
 


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 20:50 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