AGB  ·  Datenschutz  ·  Impressum  







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

mit string an PTypeinfo rankommen

Ein Thema von _frank_ · begonnen am 27. Apr 2006 · letzter Beitrag vom 27. Apr 2006
 
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#14

Re: mit string an PTypeinfo rankommen

  Alt 27. Apr 2006, 21:07
An die interne Liste die in RegisterClass() benutzt wird kommst du nicht in jeder Delphi Version, soviel ich weis.
Du kannst im grunde nur mit RegisterClass() Klassen dort hinzufügen und mit GetClass() nachfragen ob eine Klasse registriert wurde. Man könnte per Tricks an diese globale Variable herankommen, das geht mit absoluter Sicherheit. Das wäre dann aber von der Delphi Version abhängig.

Allerdings was brauchst du ?
So wie ich dich zwischen den Zeilen verstanden habe suchst du "TopLevel" Komponenten, also die Komponenten die keine weiteren Descands besitzen. Auch das lässt sich mit EnumTypeInfo() bewerkstelligen.

Als erstes mit EnumTypeInfo() eine Liste aller Klassen erzeugen die von TComponent abstammen. Danach müssen aus dieser Liste alle Klassen rausgefiltert werden die selber eine Vorfahrklasse der gefundenen Klassen in dieser List sind.

Zb. wird diese Liste auch TEdit und TCustomEdit enthalten. TEdit ist gesucht und ein Nachfahre von TCustomEdit. TCustomEdit ist eine abstrakte Vorfahrklasse und besitzt TEdit als Nachfahre in der Liste. Also wird TCustomEdit durch Ausschlußverfahren über TEdit aus der Liste rausgeschmissen.
Übrig bleibt eine Liste alle Klassen der Anwendung die abgeleitet sind von TComponent und keine Nachfahren besitzen.

Fragt sich nur was du damit weiter anfangen möchtest. Denn die Hauptaufgabe von RegisterClasses() und GetClass() ist einzigst das Mapping einen Klassennamens als String in eine TClass = Zeiger auf die VMT einer Klasse und indirekt ein Zeiger auf die RTTI. D.h. die reine Funktionalität von RegisterClasses(), GetClass() kannst du 1 zu 1 auch mit EnumTypeInfo() erreichen, ohne Speicherlisten etc.pp.

Gruß Hagen
  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 03:51 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-2025 by Thomas Breitkreuz