Newsgroup: it.comp.lang.delphi
Titolo: [D6/K2] Caricare a runtime classi dai packages

ciao
come da oggetto ho il problema di caricare dei packages a runtime.
Il tutto deriva dalla necessità di fare un'applicazione altamente modulare.
Come mi ha insegnato Marco Cantu' uso questo codice:
Var
  FormProvaOUT: TForm;
  FormClass: TFormClass;
  HandlePack: HMODULE;
begin
  //Carica il package e inizializza tutte le unit presenti al suo interno
  HandlePack := LoadPackage('prova.bpl');
  //Controlla se il package è stato caricato correttamente
  If Not (HandlePack>0) Then
  Begin
    ShowMessage('Impossibile caricare il modulo ' + '"prova.bpl".')
  End Else
  Begin
    try
      //Preleva la classe desiderata fra le class registrate
      FormClass := TFormClass(GetClass('TForm1'));
      //Controlla se la classe è stata assegnata correttamente
      If Not Assigned(FormClass) Then
        ShowMessage('Impossibile caricare la scheda ' + '"TForm1".')
      Else
      Begin
        //Crea e visualizza il form del packages
        FormProvaOUT := FormClass.Create(Application);
        FormProvaOUT.ShowModal;
      End;
    Finally
       //Scarica il package
       UnloadPackage(HandlePack);
    End;
  End;
end;
piccole precisazioni:
il package prova.bpk contiene una sola unit1
con una sola classe di tipo form: Form1 (TForm1),
nella Unit1 c'è anche il codice di registrazione della classe
all'inizializzazione della unit
Initialization
  RegisterClass(TForm1)
che tra l'altro è l'unica cosa che ho aggiunto alla unit creata
da delphi facendo New>Form dall'IDE
il problema è che superato il controllo sull'Handle
(quindi il package lo carica o meglio l'Handle non è vuoto)
non supera mai il controllo sulla classe del form
cioè ottengo sempre Assigned(FormClass)=False
e quindi il io messaggio di errore "Impossibile caricare ..."
dal debug ho visto che FormClass, anche dopo l'assegnazione,
è nil ....
sbaglio qualcosa nel codice 
o devo usare qualche accorgimento particolare
nel package o nell'applicazione?
	Ciao
	MassimoB
 

MassimoB (
noS...@lamiaemail.it
) wrote:
[CUT]
Non li ho mai usati a runtime ma se mi dai un'indirizzo email valido ti 
invio il capitolo 14 di Delphi Developer's Guide: Packages to the max.
Sono 199 KB, zippati 146 KB, rarrati 144 KB. Scegli tu.
-- 
Una volta che avete conosciuto il volo, camminerete sulla Terra guardando 
il cielo, perché là siete stati e là desiderate tornare (Leonardo da Vinci)

[cut]
grazie mille ;)
mas...@tin.it
	Ciao
	MassimoB
 

 max. Sono 199 KB, zippati 146 KB, rarrati 144 KB. Scegli tu.
E' una violazione di Copyright, guarda che avviso Xavier :-)
Andrea

E' una violazione di Copyright, guarda che avviso Xavier :-)
ma lo restituisco e poi lo cancello :D
come se mi prestasse il libro ... ;)
poi è un capitolo ...
e come libro mi interessa molto .... 
quindi prima o poi lo compro.
Che dici lo considererebbero un'ottima pubblicita'?
	Ciao
	MassimoB

 nel package o nell'applicazione?
Magari non ti serve più.. cmq.. hai messo l'opzione Build With runtime
Package?
ciao
gabriele

Package?
si anzi mi ero riproposto di postare che ho risolto il mio
problema proprio in questo modo ;)
grazie lo stesso e magari non sara' piů utile a me,
ma a chiuque legera' questo thread potra' essere
di grande aiuto ;)
	Ciao
	MassimoB