AGB  ·  Datenschutz  ·  Impressum  







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

Aus einem String eine Klasse erzeugen

Ein Thema von moelski · begonnen am 25. Nov 2010 · letzter Beitrag vom 25. Nov 2010
 
Benutzerbild von himitsu
himitsu

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

AW: Aus einem String eine Klasse erzeugen

  Alt 25. Nov 2010, 11:21
Du müßtest erstmal schauen ob/wie man mit der neuen RTTI "alle" Klassen auflistet, bzw. dort nach der Gewünschten sucht.

Wenn du dann Etwas ala TClass rausbekommst, dann könntest du darüber .Create aufrufen.



Problem: Damit das richtige .Create aufgerufen wird, muß dieses als virtual deklariert sein, welches bei TObject (TClass = class of TObject) nicht der Fall ist.
Delphi-Quellcode:
var C: TClass;
X := C.Create;
Hier würde immer nur TObject.Create aufgerufen, egal ob zur (in C gespeicherten) Klasse ein anderes .Create deklariert wurde.

Bei TComponent wäre dieses der Fall und wenn man seinen TComponent-Nachfolger registriert hat, dann geht es auch ohne RTTI (die VCL nutzt dieses ja ausgiebig, um die DFMs zu laden)

OK, man könnte nun schauen, ob die RTTI hier auch noch eine Adresse für das richtige .Create liefert und Dieses direkt aufrufen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Nov 2010 um 11:24 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 05:26 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