![]() |
Form an DLL weitergeben
hi,
wie kann ich meine Form an eine DLL als Parameter übergeben? Form-Code:
Delphi-Quellcode:
Ich rufe sie so auf:
function Form1.Send(const MeineFunktion: String; Sender: TObject): Boolean;
try @CMDFunc := GetProcAddress('MeineDLL.dll', PChar(MeineFunktion)); Result := CMDFunc(ParamStr, Sender); //Sender ist meine Form //ParamStr hat noch keine Verwendung except Result := False; end; end;
Delphi-Quellcode:
DLL-Code:
Send('Funktion1', Form1) //Funktion1 soll die Form schließen
Delphi-Quellcode:
Was muss ich ändern, damit der Quellcode funktioniert?
function Funktion1(const ParamStr: String; Sender: TObject): Boolean;
begin Result := False; try (Sender as TObject).Destroy; Result := True; except Result := False; end; end; Im Moment macht er gar nichts, obwohl die Funktion ausgeführt wird. Da haut doch was mit den Parametern nicht richtig hin. Könnt ihr mir helfen? |
Re: Form an DLL weitergeben
Statt DLL solltest du BPLs nehmen und wenn schon DLL dann als Typ bei den Parametern auch den echten Typ (zB TForm1)! Will heißen, daß die DLL auch Zugriff auf die Klassendeklaration von TForm1 haben muß!
|
Re: Form an DLL weitergeben
jupp, dass funktioniert.
Delphi-Quellcode:
Problem: Man muss die Unit Forms einbinden... und naja 302 KB sprechen für sich :?
function Form1.Send(const MeineFunktion: String; Sender: TForm): Boolean;
Danke |
Re: Form an DLL weitergeben
Zitat:
|
Re: Form an DLL weitergeben
Wie äußert sich denn "macht gar nichts"? Die Form wird nicht geschlossen? Oder die Istanzenreferenz ist <> nil? Result = false? Oder wie?
BTW: Instanzen solltest du besser über Instanz.Free statt direkt über Destroy freigeben. Bei Forms sogar noch besser über Release, weil das die Eventqueue erst zu Ende bearbeiten lässt. @Olli: Ich denke bei dem Weg über Interfaces gewinnt man nichts, denn über kurz oder lang muss das Interface auch auf den Typen zugreifen können, die Unit muss also so oder so eingebunden werden. |
Re: Form an DLL weitergeben
Hmm mir ist gerade noch was aufgefallen.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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