Entwickler-Ecke
Sonstiges (Delphi) - Modular per ini
ardani - Fr 15.01.10 12:12
Titel: Modular per ini
Ich habe zu dem Thema schon die Suche bemüht, aber nichts gefunden.
Es geht mir darum, ich habe ein Programm, in dem ich mehrere Formulare in mein "Hauptformular" lade (per TMainMenu), jetzt möchte ich diese aber beim Kompilieren nicht direkt in der exe haben, sondern als extra dateien, um leichter updates machen zu können, haben. Und die Menüpunkte dann aus einer ini oder einer anderen Datei auslesen. So das ich wenn sich was ändert, nicht das ganze Programm neu "ausgeben" muss, sondern nur noch die neuen Dateien mitliefer und ein Update der Datei mache, in dem die neuen Menüpunkte stehen.
Ich hoffe ich habe mich verständlich ausgedrückt und ihr könnt mir helfen
mfg
ardani
elundril - Fr 15.01.10 13:21
das heißt du willst gewissen formulare in einer Datei haben und dein Programm soll die Formulare beim Starten des Programms aus diesen Dateien laden?
lg elundril
ardani - Fr 15.01.10 13:26
ja, so ungefähr, z.B. nen Ordner Formular1, wo dann das Formular drinne liegt, aber auch die Unit die dazu gehört, und diese sollen beim start, bzw nach Aufruf einer Prozedur geladen werden und somit im Programm verfügbar sein.
Xentar - Fr 15.01.10 13:47
Das einzige, was mir im Moment dazu einfällt, wäre ein Plugin System, z.B. mit DLLs.
Aber wozu das Ganze? Nur um ein paar MB Datenmengen bei einem Update zu sparen?
Warum nicht einfach alle Formulare in die exe einkompilieren, und per Ini oder was auch immer nur die Menüpunkte ausblenden?
elundril - Fr 15.01.10 13:52
weil ardani ja immer wieder neue formulare hinzufügen möchte vielleicht und auch diese einzeln updaten.
das einzige was mir einfallen würde ist ebenfalls DLL, oder du schickst einfach immer die ganze Exe als update. auf die paar MB kommts im 21. Jhdt auch nimma an.
lg elundril
ardani - Fr 15.01.10 14:32
mir ging es eher darum, das Programm sozusagen live, oder "on the fly" updaten zu können.
Da wäre das ja eine gute Möglichkeit gewesen.
Nersgatt - Fr 15.01.10 16:03
ardani hat folgendes geschrieben : |
mir ging es eher darum, das Programm sozusagen live, oder "on the fly" updaten zu können.
Da wäre das ja eine gute Möglichkeit gewesen. |
Ich habe früher mit Progress 4Gl gearbeitet. Da geht das, weil jedes Formular in einer eigenen (vorkompilierten) Datei liegt.
In der Regel haben wir die Dateien auf einem Fileserver abgelegt und die Clients haben die dann von dort ausgeführt. Ich weiß gar nicht wie viele tausend Male ein Kunde verärgert war, weil Funktionen nicht mehr gingen, weil vergessen wurde die eine oder andere Datei zu kopieren. Oder Formular A öffnet Formular B. Jetzt macht man eine Änderung, wofür man beide Formulare ersetzen muss. Währenddessen hat aber User Forumular A geöffnet (also die alte Version im Speicher) -> beim Aufruf vom Formular B schmiert das Programm ab, weil die Versionen nicht zusammenpassne -> Kunde sauer -> "die sche*ß Software ist Schuld"
Ich würde die Idee verwerfen. Das bringt Dir mehr Probleme als Vorteile. Mit einer einzelnen EXE hast Du immer einen definierten Zustand.
Sinspin - Fr 15.01.10 16:14
Du hast zum einen die Möglichkeit das ganze via Laufzeitpackages zu erledigen also ist dann jedes Fenster oder jedes Modul ein Package (Bpl).
Weiter wäre es möglich mit Dll's zu arbeiten. Dafür soltest du dir aber eine Schnittstelle schreiben, über die du die Kommunikation vernünftig hinbekommst.
Wenn es dir nur um Dateneingabemasken geht reicht es auch nur die Dfm's der neuen Dialoge zu übertragen und diese dynamisch zu laden.
Aber eigentlich regt sich Heute keiner mehr auf wenn er beim Update mal ein paar MB serviert bekommt. Im Gegenteil, viel MB = viel schönes Programm, auch wenn es nur neue Skins sind. (DevExpress derzeit 10MB)
dummzeuch - Fr 15.01.10 22:06
ardani hat folgendes geschrieben : |
Es geht mir darum, ich habe ein Programm, in dem ich mehrere Formulare in mein "Hauptformular" lade (per TMainMenu), jetzt möchte ich diese aber beim Kompilieren nicht direkt in der exe haben, sondern als extra dateien, um leichter updates machen zu können, haben. Und die Menüpunkte dann aus einer ini oder einer anderen Datei auslesen. So das ich wenn sich was ändert, nicht das ganze Programm neu "ausgeben" muss, sondern nur noch die neuen Dateien mitliefer und ein Update der Datei mache, in dem die neuen Menüpunkte stehen.
Ich hoffe ich habe mich verständlich ausgedrückt und ihr könnt mir helfen
|
Kein Problem, ein Plugin-System am einfachsten basierend auf Packages. Was Du brauchst, ist ein Basis-Package, welches eine Moeglichkeit bietet, Formulare (oder generell Objekte) zu registrieren. Dann diese Registrier-Funktion beim Laden eines Plugin-Packages automatisch aufrufen lassen. Danach stehen dann die Objekte/Formulare zum Aufruf zur Verfuegung.
OK, vielleicht ist es doch ein wenig komplizierter als das, aber so ist das generelle Prinzip ... ;-)
twm
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!