Entwickler-Ecke

Sonstiges (Delphi) - Programm modular aufbauen??


damadmax - Fr 21.02.03 15:26
Titel: Programm modular aufbauen??
Hallihallo,

nach eingehendem Studium der vorhanden Posts in unzähligen Foren und Ausreizen der Suchfunktionen, stell ich meine Frage nun doch lieber mal:

Ich möchte mein Programm modular aufbauen:
d.h. das Prog soll in DLLs unterteilt werden, ähnlich wie Plugins bei Winamp oder ähnlichen Programmen.
Das ganze ist ja ein geringes Problem wenn die DLLs einzelne Fomulare beinhaltet. Ich möchte aber die Module ähnlich wie bei einem TPageControl darstellen. Also in einem Formular.

Prinzipell ist mir schon klar, daß ich der DLL irgendwie beibringen kann, wohin sie zeichnen soll. Mit der Umsetzung klappt das aber noch nicht so ganz.

Wär fürchterlich nett, wenn mir jemand weiterhelfen könnte.


Gruß

Dirk


Klabautermann - Fr 21.02.03 16:14

Hallo,

das kannst du vergessen. DLLs sind schon ziemlich angestaubt und bieten nur wenig technische möglichkeiten.
Daher kannst du keine komplexeren Datentypen übergeben und bei Zeigern scheitert es an der Tatsache, das die DLL in einem Anderen Adressraum läuft als die EXE.

Wenn du also keine Formularbeschreibungssprache entwickeln willst, die dann von deinem Hauptprogramm interpretiert wird, musst du dich nach anderen Alternativen umsehen.

Die günstigsten Kanidaten sind Borland Packages und Active(X)-Forms.

Die ersten haben den Vorteil, das sie ALLES können was du auch inerhalb deiner EXE kannst. Aber den Nachteil, das sie nur mit Borland Compilern und auch dort ausschließlich Versionsabhängig erzeugt werden können.

Die zweiteren sind ein M$ standart und können daher in allen möglichen Sprachen entwickelt werden. Sind aber langsamer und unterscheiden sich von der Philosophi von der der Borländer (was dann dur eine Kapzelung als Borland Package unter umständen wieder wetgemacht werden kann).

Du hast die Wahl.

Gruß
Klabautermann


matze - Fr 21.02.03 18:32

du könntest das so machen:

ein verzeichnis nach DLL durchsuchen. wenn das PlugIns für dein Proggi sind, dann füge einen Eintrag in ein Menü hinzu. wenn der user dann den menüeintrag anklickt, wird die DLL dynamisch geladen und das formular daraus angezigt !!


Klabautermann - Fr 21.02.03 20:51

Hallo Matze,

das funktioniert aber nur mit ganzen Formularen und auch dann nur wenn diese alleinstehend, also kein MDI sind.

Gruß
Klabautermann


matze - Sa 22.02.03 10:59

aha


damadmax - So 23.02.03 04:15

mmmhh

nun gut!

dann lass ich die dll geschichte erstmal sein.

trotzdem vielen dank für die ausführliche antwort. danke

gruß

damadmax


CenBells - So 23.02.03 14:56

und wie sieht es aus, wenn frames in den dlls sind? Ich habe das jetzt so verstanden, daß auch das nicht geht, weil die auch nicht richtig unabhängig sind?!?!

Gruß
Ken


kiwicht - Mo 24.02.03 21:16

damadmax hat folgendes geschrieben:
mmmhh

nun gut!

dann lass ich die dll geschichte erstmal sein.


hehe... LOL damadmax.... so gings mir auch... willkommen im Club der "ahnungslosen DLL-Opfer"... ;)

mfg kiwicht


Klabautermann - Di 25.02.03 11:04

Hallo,
CenBells hat folgendes geschrieben:
und wie sieht es aus, wenn frames in den dlls sind? Ich habe das jetzt so verstanden, daß auch das nicht geht, weil die auch nicht richtig unabhängig sind?!?!

ich habe es nicht ausprobier aber mit 99,9% sicherheit wird auch das nicht klappen. Allein wegen des unterschiedlichen Adressraums, wie willst du den Frame da sein Parent/owner vorstellen?

Gruß
Klabautermann


Motzi - Di 25.02.03 13:35

Klabautermann hat folgendes geschrieben:
...und bei Zeigern scheitert es an der Tatsache, das die DLL in einem Anderen Adressraum läuft als die EXE.

Interessant... jetzt läuft nicht mehr jeder Prozess in seinem eigenen Adressraum, jetzt hat sogar schon jedes Modul seinen eigenen Adressraum :shock: :wink: Also da muss ich dir wiedersprechen.. außerdem sind die Borland-Packages genauso wie die AcitveX/COM-Objekte im Endeffekt auch nichts anderes als eine Dll!