![]() |
Programm über externe Module erweiterbar machen
Hallo alerseits,
ich habe da seit längerem ein theoretisches Problem, welches ich einfach nicht gelöst bekomme und das wurmt mich. Das Problem ist (noch) allgemeiner Natur, daher kann ich auch nicht mit irgendwelchen Quellcodes dienen.... Mein Problem: Ich schreibe in Programm, dass ich nach und nach um weitere Funktionen ergänzen möchte OHNE wieder Hand an das Hauptprogramm zu legen. Ein Beispiel: Ich entwickle z.B. ein Datenbankprogramm (Bem.: ich entwickle nicht wirklich ein Datenbankprogramm, das soll hier nur als Beispiel dienen :wink: )für eine Bibliothek. Dieses möchte ich später, wenn es schon eine Weile im Einsatz ist evtl. um ein Statistik-Modul ergänzen: also ein eigenes Formular mit einigen Unterformularen etc. welches über das Hauptprogramm automatisch zugänglich gemacht wird, wenn es irgendwo im Programmpfad gefunden wird. Das ganze ließe sich um weitere Beispiele ergänzen. Das klingt sehr nach dem klassischen Plugin-Gedanken, aber auch da weiß ich nicht genau, wie das funtionieren könnte. Das Hauptprogramm muss ja irgendwie eine Suchfunktion bieten, welches ein Verzeichnis nach Zusatzmodulen absucht und evtl vorhandene automatisch einbindet. Ich hoffe ich habe mein Problem verständlich geschildert. Konkrete Fragen habe ich folgende: - in welchem Dateiformat sollte man die Module denn speichern? DLL? Die Module müssen ja kompiliert vorliegen. - wie könnte die automatische Suche des Hauptprogrmms aussehen? - wie kann dann das Modul ins Hauptprogramm eingebunden werden? Es müßte sicherlich in jedem Modul so etwas wie eine "Einstiegsfunktion" geben, aber außer dieser Tatsache hab ich keinerlei Vorstellungen, wie so etwas aussehen könnte :-( Ich vermute mal, da ich nicht der einzige bin, der sich mit so einem Problem konfrontiert sieht, dass mir hier irgend jemand weiterhelfen kann und sei es "nur" mit weiterführenden Quellen zur Recherche. Vielen Dank schon einmal im Voraus. Viele Grüße Murphy |
Re: Programm über externe Module erweiterbar machen
Such mal nach dem Pluginframework RemObjects "Hydra".
|
Re: Programm über externe Module erweiterbar machen
Zitat:
Es werden 3 bpl als Laufzeit-BPL benötigt. Das hat zur Folge, das D2007 wohl alle bpl die in der Componentenliste stehen, als Laufzeit-bpl anfordert. Im konkreten Fall musste für ein Programm ca. 60 Mbyte bpl als Laufzeitumgebung kopiert werden. Mit allen Folgen der BPL - Hölle. Da in meinem Programm nur eine sehr lose Kopplung Hauptprogramm - Modul besteht, habe ich jetzt eine Lösung mit Exe gewählt. Über Aufrufparameter wird Server,Database,Parent und ein Kommando übergeben. Das Programm trage ich einfach in einer Pluginliste ein und es ist dann abrufbar. Wird das Plugin-Programm ohne Kommandozeilenparameter gestartet, öffnet es ein Auswahlmenü und läßt sich als Systemtool verwenden. Das klappt bis auf ein paar noch zu lösende Kleinigkeiten ganz gut, bis jetzt habe ich noch keinen Nachteil feststellen können. Gruß Peter |
Re: Programm über externe Module erweiterbar machen
Schon mal vielen Dank für die schnellen Antworten!
An hanspeter: Wie meinst du das mit EXE? Du hast alle deine externen Module jeweils als EXE-Datei hinterlegt und rufst sie über ein zentrales Steuerprogramm auf? Daß hieße, dass die Module auch als Einzelprogramme funktionieren sollten..... So ich das richtig verstanden habe, ist das leider für mich nicht praktikabel, da die Module nicht einzeln/extern gestartet werden können sollen :-( Gruß Murphy |
Re: Programm über externe Module erweiterbar machen
Zitat:
|
Re: Programm über externe Module erweiterbar machen
Zitat:
Das externe Starten ist ein Zusatznutzen. Ein einfaches Beispiel: Stammdaten Kunden. Das Bearbeitungsprogramm muss nur die Datenbankverbindung und evenduell die ID des zu markierenden Kunden wissen. Also rufe ich das Programm mit Stammdat /S=localhost /D='Datenbank.fdb' /K=1234 auf. Stellt das aufgerufene Programm fest, dass keine oder keine korrekten Aufrufparameter da sind, kann es sich ohne Reaktion beenden. Der Start wird im Hauptprogramm vermerkt und mit "waitforsingleprocess" zyklisch auf Programmende abgefragt. Übergebe ich den Parent und weise diesen dem aufgerufenen Programm zu, so wird es im übergeordneten Fensterrahmen angezeigt. Damit kann ich ein modales Verhalten nachbilden. Ich fasse in der Regel mehrere zusammengehörende Aufgaben in einer EXE zusammen. Also /K Kunde /A Artikel /L Lager. Der Zusatznutzen, wurden keine Parameter angegeben, dann öffnet sich ein Menü mit den Schaltern "Bearbeite Kunde", Bearbeite Artikel",... Ich habe 5 solche Module jedes etwa 3,5 Mbyte. Das sind zusammen 17 bis 18 Mbyte. Immer noch deutlich weniger als mit Auslieferung der BPL als Laufzeitsystem und vor allen nicht mehr versionsabhängig. (...bpl kann nicht geladen werden, da mit unterschiedlichen Versionen von ... kompiliert.) Gruß Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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