AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm über externe Module erweiterbar machen
Thema durchsuchen
Ansicht
Themen-Optionen

Programm über externe Module erweiterbar machen

Ein Thema von texmurphy901 · begonnen am 10. Jun 2008 · letzter Beitrag vom 10. Jun 2008
Antwort Antwort
texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#1

Programm über externe Module erweiterbar machen

  Alt 10. Jun 2008, 08:10
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 )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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Programm über externe Module erweiterbar machen

  Alt 10. Jun 2008, 08:12
Such mal nach dem Pluginframework RemObjects "Hydra".
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Programm über externe Module erweiterbar machen

  Alt 10. Jun 2008, 08:30
Zitat von Luckie:
Such mal nach dem Pluginframework RemObjects "Hydra".
Ist mit D2007 wenig praktikabel.
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
  Mit Zitat antworten Zitat
texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#4

Re: Programm über externe Module erweiterbar machen

  Alt 10. Jun 2008, 10:22
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Programm über externe Module erweiterbar machen

  Alt 10. Jun 2008, 10:31
Zitat von texmurphy901:
S...das leider für mich nicht praktikabel, da die Module nicht einzeln/extern gestartet werden können sollen
Dann sorge dafür, das sie ohne geeignete Kommandozeilenparameter nicht funktionieren. Du könntest auch einen Mechanismus einbauen, der das Programm beendet, wenn die Hauptanwendung nicht läuft.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Programm über externe Module erweiterbar machen

  Alt 10. Jun 2008, 10:50
Zitat von texmurphy901:
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
Jein.
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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