Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DLL-Formular als Plug-In - oder "richtige" DLL (https://www.delphipraxis.net/80156-dll-formular-als-plug-oder-richtige-dll.html)

TheMiller 3. Nov 2006 18:57


DLL-Formular als Plug-In - oder "richtige" DLL
 
Hallo,

wollte mein Programm modular aufbauen. Dazu habe ich mir gedacht, Formulare in DLLs auszulagern und beim Starten zu laden. Dann könne ich von dem PlugIn aus direkt auf (zb) ListView1 des Haupprogrammes zugreifen. Könnte ich mit einer richtigen DLL doch nicht - wenn doch - wie??

Nur, wozu gibt es dann DLL-Formulare? Ich könnte doch genausogut die Echse laden, oder? Wo sind hier die Unterschiede und was ist die bessere Plug-In-Lösung...?

Danke im Voraus!

mkinzler 3. Nov 2006 19:26

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Also entweder du pcakst die Formulare in Bpls oder du mußt Wrapper-Funktionen schreiben.

TheMiller 4. Nov 2006 14:07

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Ok, BPLs find ich richtig schlecht. Ich hab dagegen eine Antipatie... Was sind Wrapper-Funktionen? Aufwendig? Umständlich? Viel?
Und was hälst du/ihr von Formular-DLLs?

DGL-luke 4. Nov 2006 15:18

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Wrapperfunktionen sind Funktionen wie "Form1Listbox1ItemAdd", die du aus der DLL aufrufst, um den modulübergreifenden Zugriff auf die VCL zu verhindern.

TheMiller 4. Nov 2006 15:22

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Aso. Aber ich merke gerade eins:

Ich will ja ein Programm mit PlugIns machen. Diese PlugIns sind ja nicht nur DLLs, die Funktionen hinzufügen, sondern sollen auch die GUI und das Programm visuell erweitern. Also Formulare, die hinzugefügt werden. Kann ich gar keine DLL schreiben, sondern muss soagr ein Formular-DLL nehmen, damit ich auch auf Form1 des Hauptprogramms oder die ZEOS-Komponente zugreifen kann. Doch das mit dem Wrapper habe ich nicht so ganz verstaden. Hast Du ein Beispiel für mich?

DGL-luke 4. Nov 2006 15:34

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Ja.

Angenommen, du willst auf ein Frm zugriefen und darin bei einer listbox etwas hinzufügen. Solltest du das nicht so machen:

Delphi-Quellcode:
//DLL
procedure ListBoxAddText(LB: TListBox);
begin
  LB.AddItem('text',nil);
end;
Sondern so:

Delphi-Quellcode:
//DLL
function GetListBoxAddText: PChar;
begin
  Result := 'text'; //ich weiß jetzt nicht, ob der compiler das umsetzt...
end;

//Hauptprogramm
Listbox1.AddItem(GetListBoxAddText,nil);
Das ist jetzt natürlich nur skizziert und würde höchstwahrscheinlich ein böses Speicherleck hinterlassen...

mkinzler 4. Nov 2006 17:03

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Zitat:

Ok, BPLs find ich richtig schlecht. Ich hab dagegen eine Antipatie... Was sind Wrapper-Funktionen? Aufwendig? Umständlich? Viel?
In diesem Fall wären Bpls aber optimal (nicht als Laufzeitpackages gegen die gelinkt wird).

TheMiller 4. Nov 2006 17:11

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Hm...

Kann ich nicht einfach von einem DLL Formular auf die Zeos-Komponente oder andere Komponenten zugreifen? Ich meine, ein DLL-Formular muss ja auch irgendeinen Sinn haben...

Und die DLL ist ja nicht ohne die Hauptanwendung lauffähig, also abhängig von ihr. Da muss ich doch sowas wie "Form1.ZQuery.Close" vom DLL-Formular aus machen können!

mkinzler 4. Nov 2006 17:15

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Zitat:

Und die DLL ist ja nicht ohne die Hauptanwendung lauffähig, also abhängig von ihr. Da muss ich doch sowas wie "Form1.ZQuery.Close" vom DLL-Formular aus machen können!
Nein geht nicht! Nur bei Bpls, da Borland den Übergabemechansimus von Dlls dementsprechend geändert hat.

TheMiller 4. Nov 2006 17:19

Re: DLL-Formular als Plug-In - oder "richtige" DLL
 
Mist. Gibt es da eine Möglichkeit irgendwie in der Art zuzugreifen oder ist das wieder die Geschichte mit der Wrapper-Funktion?


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