AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Form aus BPL dynamisch laden

Ein Thema von hanspeter · begonnen am 22. Feb 2006 · letzter Beitrag vom 1. Mär 2015
Antwort Antwort
hanspeter

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

Form aus BPL dynamisch laden

  Alt 22. Feb 2006, 14:14
Hallo,

in einer dynamisch zu ladenden Form
befindet sich folgende Anweisung :

Delphi-Quellcode:
initialization
  RegisterClass(TForm2);
finalization
  UnRegisterClass(TForm2);
Der Aufruf erfolgt mit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  PackageModule: HModule;
  AClass: TPersistentClass;
begin
  PackageModule := LoadPackage('Package1.bpl');
  Application.ProcessMessages;
  begin
    AClass := GetClass('TForm2');

    if AClass <> nil then
      with TComponentClass(AClass).Create(Application)
        as TCustomForm do
      begin
        ShowModal;
        Free;
      end;

    UnloadPackage(PackageModule);
  end;
end;
Bei der Anweisung AClass := GetClass('TForm2'); ist AClass nil.

Binde ich die Form statisch ein, dann funktioniert die Anweisung.

Es handelt sich um ein Beispielprojekt von der Borland BDS Seite.

Dynamic Packages
A white paper by Vino Rodrigues,
vinorodrigues@yahoo.com

Copyright (C) 2001 Vino Rodrigues

Sourcecode to example 2

Hat wer einen Tip, was hier beim dynamischen verwenden einer Form schief läuft?

Gruß
Peter
  Mit Zitat antworten Zitat
hanspeter

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

Re: Form aus BPL dynamisch laden

  Alt 23. Feb 2006, 07:40
Ich hatte bereits in der vergangenen Woche zu diesem Thema gefragt und keine
Antwort erhalten.

Da ein Beispiel aus einem Borland Tutorial auch nicht funktioniert, gehe ich inzwischen
davon aus, dass es sich um einen Bug in D2006 handelt.

Gruß Peter
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Form aus BPL dynamisch laden

  Alt 23. Feb 2006, 15:30
Hi,

Hast du mal probiert Delphi-Referenz durchsuchenInitialisePackage noch mal manuell zusätzlich aufzurufen?

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
hanspeter

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

Re: Form aus BPL dynamisch laden

  Alt 23. Feb 2006, 16:10
Zitat von mirage228:
Hi,

Hast du mal probiert Delphi-Referenz durchsuchenInitialisePackage noch mal manuell zusätzlich aufzurufen?

mfG
mirage228
Das noch nicht, aber wenn ich das ganze mit dem Debugger schrittweise abarbeite, dann geht er über den
Initialisationsteil durch. RegisterClass wird abgearbeitet, aber die Klasse ist danch mit GetClass nicht
zu finden.

Interessanter Weise funktioniert das, wenn ich die Unit statisch einbinde.
Und wie gesagt, das ganze ist ein borland-Beispiel.

Gruß Peter
  Mit Zitat antworten Zitat
dfried

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

Re: Form aus BPL dynamisch laden

  Alt 23. Feb 2006, 16:27
Hast du es mal mit FindClass probiert?
Damit hab ich das unter D7 mit Forms aus Packages immer gemacht.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Form aus BPL dynamisch laden

  Alt 24. Feb 2006, 22:30
Dumm gefragt, aber ist das Hauptprogramm auch gegen das rtl/vcl Package kompiliert ("Mit Laufzeitpackages kompilieren")? Denn wenn nicht, dann hast du zwei Klassen-Listen, die nichts von einander wissen.
  Mit Zitat antworten Zitat
hanspeter

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

Re: Form aus BPL dynamisch laden

  Alt 24. Feb 2006, 22:39
Zitat von jbg:
Dumm gefragt, aber ist das Hauptprogramm auch gegen das rtl/vcl Package kompiliert ("Mit Laufzeitpackages kompilieren")? Denn wenn nicht, dann hast du zwei Klassen-Listen, die nichts von einander wissen.
Weiß ich ehrlich gesagt nicht.
Ich habe einfach das Beispiel von Borland BDS kopiert und ausprobiert.
Ich bin erst am Montag wieder in der firma und kann das prüfen.

Kann mir übrigens wer ein (kostenpflichtiges) Tool empfehlen, was das Update der BPL Hölle einfacher macht.
So etwa in der Form.
Bestimme alle zu updatenden Dateien, stelle dies ins Internet und lege dort zum Download eine Liste an, die
gegen die aktuelle Konfiguration abgeglichen wird. (Autoupdate)

Mit Gruß

Peter
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Form aus BPL dynamisch laden

  Alt 25. Feb 2006, 00:00
[quote="hanspeter"]
Zitat von jbg:
Kann mir übrigens wer ein (kostenpflichtiges) Tool empfehlen, was das Update der BPL Hölle einfacher macht.
So etwa in der Form.
Bestimme alle zu updatenden Dateien, stelle dies ins Internet und lege dort zum Download eine Liste an, die
gegen die aktuelle Konfiguration abgeglichen wird. (Autoupdate)
Ich hab mir für meine Anwendung, die genau so aus BPL-Lösungsmodulen mit Forms etc. aufgebaut ist, einen "Launcher" geschrieben, über den die Anwendung gestartet wird und der genau das abgleicht.

Viele Grüße
Igotcha
  Mit Zitat antworten Zitat
Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#9

Re: Form aus BPL dynamisch laden

  Alt 16. Aug 2006, 16:00
Auch wenns schon ne Weile her iss, ich habs selbe Problem gehabt.

Das hier muss noch in die Unit der BPL unten hin:

Delphi-Quellcode:
initialization
  RegisterClass({Klassenname});
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Form aus BPL dynamisch laden

  Alt 1. Mär 2015, 14:11
Hallo,

ich entstaube mal diesen Thread (irgendjemand sollte mal im Archiv staubwischen).

Ich habe auch das Problem, dass GetClass immer Nil zurückliefert, obwohl die Klasse
im Package registriert wird.

Hier mal der aktuelle Link zum Beispiel
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:31 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