Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponenten per DLL registrieren (https://www.delphipraxis.net/71223-komponenten-per-dll-registrieren.html)

_frank_ 11. Jun 2006 14:07


Komponenten per DLL registrieren
 
Hi,
ich versuche Komponenten über dlls zu registrieren, damit ich die Komponenten-Verwaltung meines DFM-Editors modular erweitern kann.
Mein bisheriger Versuch:

Delphi-Quellcode:
//dll-code
uses
  ...,extCtrls;

procedure registerComp;
begin
  RegisterClass(TShape);
end;

exports
  registerComp;

//Host-code
type
  RegisterComp= procedure;
...
procedure TForm1.Button1Click(Sender: TObject);
var h:THandle;
    p:RegisterComp;
begin
  h:=LoadLibrary('dll_p.dll');
  @p:=GetProcAddress(h,'registerComp');
  if assigned(p) then
  begin
    p;
  end;
  if assigned(getclass('TShape')) then
    showmessage('funktioniert')
  else
    showmessage('funktioniert nicht');
  freelibrary(h);
end;
die DLL-Procedure wird ausgeführt, jedoch ist die klasse nicht registriert (bzw. nur innerhalb des DLL-Adressraumes registriert), denn ich bekomme die Meldung "Funktioniert nicht"...

Jemand eine Idee, wie man das bewerkstelligen kann?

Gruß Frank

Bernhard Geyer 11. Jun 2006 17:30

Re: Komponenten per DLL registrieren
 
Wird nur funktionieren wenn sowohl Exe als DLL mit Laufzeitpackages arbeiten. Ansonsten haben Exe und DLL komplett unabhängige Objekthierarchien (TObject Exe <> TObect Dll). Es könnte auch sein das es nur funktioniert wenn die DLL ein Delphi-Package ist welches du dynamisch Lädst.

_frank_ 11. Jun 2006 22:17

Re: Komponenten per DLL registrieren
 
wie erzeuge ich ein solches Package, bzw. wie lad ich das (delphi3)?
Hat da irgendjemand ein funktionierendes Beispiel? hab da zwar funktionen wie LoadPackage gefunden aber hab es noch nicht wirklich zum laufen bekommen.

Gruß Frank

_frank_ 14. Jun 2006 01:41

Re: Komponenten per DLL registrieren
 
niemand eine idee oder am besten ein Beispiel?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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