Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verwenden von GetClass und RegisterClass (https://www.delphipraxis.net/30025-verwenden-von-getclass-und-registerclass.html)

striker 18. Sep 2004 16:01


Verwenden von GetClass und RegisterClass
 
Hallo zusammen,

ich habe folgendes Problem:

Ich versuche ein DFM mit ReadComponentResFile('c:\temp\test.dfm', form2);
auszulesen und dann anzuzeigen.
Das Problem ist das nicht alle Klassen registriert sind.
Selbst mit ein dfm welches nur Standardkomponenten enthält läßt sich so nicht
anzeigen. Funktionieren tut es wenn ich die einzelnen Klassen mit
z.Bsp RegisterClass( TButton) registrieren und dann das Fenster anzeige.
Gibt es da nicht irgendwie eine Möglichkeit die Standarddelphikomponenten
irgendwie zu registrieren bei Programmstart?

Striker

maximov 18. Sep 2004 22:20

Re: Verwenden von GetClass und RegisterClass
 
Wenn du die VCL (VCL07.bpl) extern verlinkst, dann können die nicht benutzten componenten nicht weg optimiert werden, und das müsste somit gehen (vermute ich mal).

PS: Wilkommen in der Praxis :dp:

striker 19. Sep 2004 09:23

Re: Verwenden von GetClass und RegisterClass
 
ja ok aber wie verlinke ich die VCL extern? Mit LoadPackage ?
Loadpackage('vcl60.bpl') wird zwar ausgeführt und ich bekomme auch ein Handle zurück aber
GetClass oder FindClass bringen immer noch kein Ergebnis.. :?:

Ps: danke für die willkommensgrüsse :-D

maximov 19. Sep 2004 12:49

Re: Verwenden von GetClass und RegisterClass
 
Ne ne, das was du versucht hast, ist dynamisches laden von BPLs zur laufzeit (kann für plugIns recht praktisch sein).

Du musst es statisch extern verlinken: Projektoptionen -> packages -> 'mit laufzeit-packages compilieren' -> rtl60, vcl60 ....in etwa.

dh. du musst diese packages (aus %win\system32) dann aber auch mit ausliefern

:-D

striker 19. Sep 2004 20:22

Re: Verwenden von GetClass und RegisterClass
 
Das hab ich nun auch probiert aber es hat auch keinen Erfolg gebracht...
Laut doku ist es doch so dass ein Package alle Klassen registriert sobald es geladen
wird. Meine Vermutung ist das die Registrierung nicht global geschieht...
:?: :?: :?:

maximov 20. Sep 2004 09:05

Re: Verwenden von GetClass und RegisterClass
 
hmm... hab mal ein bisschen geforscht und fest gestellt, das komponenten, die direkt auf einer form benutzt werden nicht explizit registriert werden müssen. Es wird einfach die fieldClassTable des forms geholt, wo dann alle klassen gelistet sind die das form benutzt...und erst danach wird nach klassen gesucht, die in der normalen registrierung sind :(

So jetzt gibt es da aber einen illegalen trick, der aber relativ effektiv sein könnt.

Werd heut abend mal was zu testen und dann bescheid sagen :wink:

maximov 21. Sep 2004 13:17

Re: Verwenden von GetClass und RegisterClass
 
NEIN... :wall: Alles futsch. Ich hoffe mal du hast den beitrag auswendig gelernt? :evil:

striker 21. Sep 2004 16:05

Re: Verwenden von GetClass und RegisterClass
 
:wiejetzt:
Neeeeeeeeeeeeeeeeeeeeeeeeeeeinnnnn. Natürlich nicht. :cry:
Hast du es bitte noch irgenwo??

maximov 21. Sep 2004 22:15

Re: Verwenden von GetClass und RegisterClass
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da ich es hasse mich zu wiederholen, mach ich es kurz. In der unit steht jetzt alles nötige und der code von Hagen. Du musst nur die folgende funktion aufrufen:

Delphi-Quellcode:
RegisterAllPersistentClasses(HInstance);
Das registriert, wie gesagt, alle TPersistent abkömmlinge, deren RTTI einträge in dem modul gefunden werden.

viel glück :)

striker 22. Sep 2004 07:34

Re: Verwenden von GetClass und RegisterClass
 
Hallo Maximov,

Ja super das ist genau das was ich brauche. :spin:

Vielen Dank Maximov :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Seite 1 von 2  1 2      

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