Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamisch .pas Dateien usen/laden (https://www.delphipraxis.net/135847-dynamisch-pas-dateien-usen-laden.html)

Berlinermauer 18. Jun 2009 21:04


Dynamisch .pas Dateien usen/laden
 
Hi,

und zwar ich habe vor im Grunde wie eine DLL die pas zu laden, und diese hatt dann ne Klasse mit Funktionen.

Einfacher wäre es ja mit ner DLL aber da hab ich das folgende Problem :

1. HauptProgramm -> läd DLL ClassXXX.dll
2. ClassXXX.dll -> läd Classes.dll
3. ClassXXX.dll -> Anfrage an Classes.dll
4. Classes.dll -> Weiterleiten an HauptProgramm
5. HauptProgram -> Ereignis an die ClassXXX.dll

ich hoffe ihr habt verstanden was ich meine.
Mein Problem ist das 4te, wie ich von ner dll aus ClassenMethoden aufrufe, ohne zB Sockets zu nutzen.

D.H. meine dll muss irgendwie meine Pascal Routinen (zb Memo1.Log.Lines.Add) aufrufen.

mkinzler 18. Jun 2009 21:07

Re: Dynamisch .pas Dateien usen/laden
 
Biete Interface-Funktionen an

Phoenix 18. Jun 2009 23:30

Re: Dynamisch .pas Dateien usen/laden
 
Um diese ANtwort etwas weiter auszuführen:

Deine ClassXXXX dll's müssen alle zum Beispiel die Unit 'CommonClasses' kennen. In dieser Unit CommonClasses ist ein Interface definiert, welches z.B. die Ad-Funktion definiert. Die Classes.dll und Deine ClassXXXX.dll kennen dieses Interface. Können also auf diesem ICommonClass.Add aufrufen.

In Deinem Hauptprogramm hast Du dann eine Klasse, die das Interface ICommonClass implementiert. In der Methode Add() auf dieser Klasse steht dann eben Memo1.Lines.Add(value); drin. Diese sorgt also für die Weiterleitung an das richtige Ziel.

Da diese Klasse das Interface ICommonClass implementiert kann ein Objekt dieser Klasse auch an die dll's weitergereicht werden, und diese können darauf die Add methode aufrufen, weil sie ja das Interface kennen. Die eigentliche implementierung müssen sie dafür nicht kennen, die wird vom Hauptprogramm eben vorher an die dll übergeben.


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