AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sinn von DLL-Formularen

Ein Thema von TheMiller · begonnen am 15. Sep 2005 · letzter Beitrag vom 23. Sep 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#11

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 09:13
Wie !!! // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#12

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 09:21
Schau dir dazu mal die Funktionen LoadPackage und UnloadPackage an. Mit denen geht das. Hab leider grad meinen Notebook nicht griffbereit, sonst würd ich dir ein bisschen Sourcecode schicken wie ich das gemacht hab.

Daniel
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#13

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 09:30
Moin Martin,

LoadPackage() akzeptiert einen gesamten Pfad:
SomeHandle := LoadPackage(IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName))+'Modules\ModuleCore.bpl'); Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#14

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 10:22
Ja - Klasse !

Sorry, Loadpackage war mir bisher kein Begriff. Prima das macht das natürlich einfach. Tja wieder was gelernt !


Woran scheitert das dann, dass man die Borlandpackages nicht in, sagen wir, in ein Unterverzeichnis legen kann. Könnte ich jetzt nicht im Projektquelltext die benötigten Borland bpl´s von Hand aus meinen bpl-Verzeichnis laden lassen. Dann hätte der Endanwender nur noch die Exe´s im Programmverzeichnis...?
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#15

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 10:28
Ich hab jetzt kein Delphi hier, also kann ich auch nicht nachsehn, ob man diesen Pfad umbiegen kann. Ich weiss nur, dass versucht wird, die Packages entweder aus dem System-Verzeichnis (C:\Windows\System32) oder dem Anwendungsverzeichnis zu laden. Vielleicht kannst du das ja erweitern, indem du den Pfad zu den Packages in die PATH-Variable eintraegst, das duerfte helfen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#16

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 10:49
Zitat:
Dann hätte der Endanwender nur noch die Exe´s im Programmverzeichnis...?
Dann packe die EXE zu den Packages ins Unterverzeichnis und lege im Hauptverzeichnis einfach einen Link auf die EXE.

Desweiteren gibt es in der Windows Registry die Möglichkeit zu einer EXE einen eigenen Suchpfad anzulegen. Empfehlen tue ich diese Vorgehensweise aber nicht.

Normalerweise wird man bei Profi-Anwendungen, bei denen sich Packages auch lohnen, sowieso einen Link auf'm Desktop legen.

Gruß hagen
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#17

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 10:57
Hallo Andres, Daniel, und Hagen
zunächst mal vielen Dank!

Im Moment geht es zwar nicht, aber ich werde das demnächst mal durchprobieren. Das hat ganz praktische Folgen. Wenn per Internet aktualisert wird (oft immernoch ISDN) dann ist die Ladezeit ein Argument, wenn nach dem Laden und Übertragen noch Änderungen per Fernwartung erfolgen. Bei kleineren Datenbankupdates lohnt es sich nicht jedesmal ein Setupskript zu erstellen und hier passt das Packagekonzept sehr gut. Wenn man das noch übersichtlich in die Verzeichnisse bekommt, dann ist das auch für den Endanwender hilfreich.

PS: Die Idee mit dem Link hat hat Raffinesse, fordert aber dann einn absoluten Pfad im Link. Muß kein Nachteil sein, nimmt aber die Verschiebbarkeit. Das bringt dazu, dass es so möglich ist ein Hauptmenueprogramm ins Anwendungsverzeichnis zu legen und die Teilprogramme zu den bpl´s . Das wäre zu Überlegen....

Viele Grüsse aus dem sonnigen Hannover // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#18

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 10:59
MDI's lassen sich auch aus normalen DLL's heraus laden. Bei Formularenin normalen DLL's hat es sich bewährt in der EXE bei Laden eines solchen nicht-modalen Forms einen TForm Container zu benutzen. Das heist: die EXE erzeugt erstmal ein eigenes MDI TForm als Container und übergibt dies als Parent der DLL. Die DLL erzeugt ihrerseits ihr Formular und bindet es in dieses MDI Form als ParentWindow ein. Natürlich muß diese DLL TFormohne Caption, Border und alClient etc.pp. erzeugt werden. In diesem Moment hat man fast keinerlei Probleme mehr, bis auf den Punkt der Fokusierung der Controls auf solchen Forms.

Das Problem entsteht dadurch das die Operatoren is und as nicht mher funktionieren, das heist durch die mehrfache Einbindung der gleichen Klassen in verschiedene Module unterscheiden sich die Codesegment Zeiger auf diese Klassen, jenachdem welches Modul ein Objekt erzeugt hat. Die Abfrage und der Vergleiche einer Klasse funktioniert aber über deren Zeiger in das Codesegement in dem die Klassenstruktur, sprich RTTI, VMT und DMT etc.pp., gespeichert sind.

Diese Nachteile gibt es bei Packages eben nicht das selbst diese Codesegementzeiger duch den Compiler/Linker als DLL Funktionen exportiert werden.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#19

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 11:06
Wir machen es seit Jahren so:

EXE + BPLs + INIs in ein gemeinsammes Hauptverzeichnis.
Es gibt eine Schnittstellen-BPL zb. Main.bpl in der die komplette Modulverwaltung samt Hauptformular implementiert wurde.

Ladbare Module, sprich Formulare und Druckformulare, greifen nun nur auf Packages zu, inklusive Main.bpl. Sie werden in einem relativen Unterordner gespeichert zb. \Module\, und haben die Endung .MDL.

Danaben gibt es einen \Daten\ Ordner in deseen Subordnern die Daten zu den verschiedenen Mandanten stehen. In jedem Mandanten Ordner finden sich auch die Konfigurationsdateien der ladbaren Module, Menusysteme usw.

Wichtig! die Benutzung von Packages benötigt ein strafes Regime bei der Organisation der Firmenstandards der Programmierung. Man sollte und muß sich auch auf die Benutzung spezifscher Packages beschränken. D.h. einfach mal irgendwelche 3'rd party Packages einbinden wegen einer pobeligen Komponente ist nicht mehr, da es den Aufwand des Supports erhöht. Man hat so zwar einige Einschränkungen diese führen aber dazu das man die Programmierung in Teams und die eigenen Firmenstandards stärkt.

Gruß Hagen
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#20

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 11:13
Zitat von negaH:
MDI's lassen sich auch aus normalen DLL's heraus laden. Bei Formularenin normalen DLL's hat es sich bewährt in der EXE bei Laden eines solchen nicht-modalen Forms einen TForm Container zu benutzen. Das heist: die EXE erzeugt erstmal ein eigenes MDI TForm als Container und übergibt dies als Parent der DLL. Die DLL erzeugt ihrerseits ihr Formular und bindet es in dieses MDI Form als ParentWindow ein. Natürlich muß diese DLL TFormohne Caption, Border und alClient etc.pp. erzeugt werden. In diesem Moment hat man fast keinerlei Probleme mehr, bis auf den Punkt der Fokusierung der Controls auf solchen Forms.

...
Funktioniert denn damit dann cuh noch die Tab-Taste? Ich habe auch ziemlich lange damit verbracht MDIs ind DLLs zu packen, hat auch alles soweit funktioniert, bis auf die Tab-Taste...

Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 09:49 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