AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Runtime-Packages, visual inheritance, Updaten der Runtime-Packages ohne exe-Update
Thema durchsuchen
Ansicht
Themen-Optionen

Runtime-Packages, visual inheritance, Updaten der Runtime-Packages ohne exe-Update

Ein Thema von RSE · begonnen am 9. Nov 2012 · letzter Beitrag vom 12. Nov 2012
 
RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#1

Runtime-Packages, visual inheritance, Updaten der Runtime-Packages ohne exe-Update

  Alt 9. Nov 2012, 14:30
Hallo,

ich arbeite gerade an einem größeren Projekt, bin noch ziemlich am Anfang. Jetzt bin ich gerade auf Runtime-Packages als Alternative zu DLLs gekommen. Konkret hat mich das hier inspiriert:
http://etutorials.org/Programming/ma...side+Packages/
Dort wird gezeigt wie man eine Form aus einem zur Laufzeit dynamisch geladenen Package benutzen kann. Ein Chapter zuvor wird davor gewarnt, dass die exe neu compiliert werden muss, wenn in den Interface-Abschnitten der Units in den Packages etwas verändert wird:
http://etutorials.org/Programming/ma...lphi+Packages/
Ich gehe mal stark davon aus, dass diese Warnung nur auf statisch gelinkte Runtime-Packages zutrifft.

Nun zu meiner eigentlichen Frage: Ich habe vor in meiner exe eine von TForm abgeleitete Basisklasse zu definieren und diese in verschiedenen Packages verschieden zu spezialisieren (mittels visual inheritance). Aus der exe heraus erfolgt der Zugriff ausschließlich auf die Elemente (Methoden, Eigenschaften etc.) der Basisklasse, die exe weiß nichts von der Spezialisierung. Unter diesen Voraussetzungen kann ich doch nun ohne weiteres während der Laufzeit der exe solch ein Package entladen, die Package-Datei updaten, neu laden, die Form wieder instanzieren (über eine Klassenvariable, siehe Quelltextbeispiel unten) und anzeigen.
Delphi-Quellcode:
var
  FormSpez: TForm;
  FormClass: TFormClass;
  HandlePack: HModule;
begin
  // try to load the package
  HandlePack := LoadPackage('PackWithForm.bpl');
  FormClass := TFormClass(GetClass);
  FormSpez := FormClass.Create(Application);
  FormSpez.ShowModal;
  FormSpez.Free;
  UnloadPackage(HandlePack);
Da ich noch an weiteren Stellen erst einmal herausbekommen muss, wie so etwas tatsächlich gemacht werden muss (z.B. Einstellungen in Delphi etc.), möchte ich gerne im Vorfeld hier klären, ob das Vorhaben so machbar ist, oder ob es von vornherein zum Scheitern verurteilt ist. Wenn ich mich damit bereits auskennen würde, würde ich es natürlich selbst mal schnell austesten


MfG
RSE
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."

Geändert von RSE ( 9. Nov 2012 um 15:14 Uhr)
  Mit Zitat antworten Zitat
 


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 07:02 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 by Thomas Breitkreuz