[ zamm72 @ 25.11.2006. 11:41 ] @
Problem sa dinamičkim učitavanjem bpl paketa u Delphi 6.0.

Imam paket "pkgPrva.bpl" i u njemu formu "frmPrva" ( sa inicijalizacijom gde stoji sledeće

initialization
RegisterClass(TfrmPrva);
showmessage('Registracija klase "TfrmPrva" koja je u paketu');

U glavnom programu učitam paket "pkgPrva.bpl" i tu je ok, jer se učita paket i prikaže mi se poruka iz forme da je klasa forme registrovana.
Medjutim, nadalje ne uspevam da nadjem klasu forme. Šta može da bude problem.

Evo koda u glavnom programu:

procedure TForm1.btnPokreniFormuClick(Sender: TObject);
var Forma : TForm;
KlasaForme : TFormClass;
Odgovor : Hmodule;
begin

Odgovor := LoadPackage('pkgPrva.bpl');
if Odgovor > 0 then
begin
ShowMessage('Paket "pkgPrva.bpl" uèitan');

KlasaForme := TFormClass(GetClass('TfrmPrva'));
if Assigned(KlasaForme) then
begin
Forma := KlasaForme.Create(Application);
try
Forma.ShowModal;
finally
Forma.Free;
end;
end
else
ShowMessage('Klasa forme nije nadjena');
UnloadPackage(Odgovor);
end
else
ShowMessage('Paket nije pronadjen');
end;

[ _deran_ @ 25.11.2006. 12:55 ] @
Otidji na project->options->packages i iskljuci "build with runtime packages"
normalno da ces onda morati i sve ostale bpl fajlove da dajes uz aplikaciju...
[ zamm72 @ 26.11.2006. 06:54 ] @
Meni je cilj bio da samo bpl fajlove koje ja napravim prosledim uz aplikaciju.
Da li postoji ta opcija?
[ morlic @ 26.11.2006. 09:08 ] @
Na taj nacin bpl ima svoju verziju registracije klase forme, a exe ima svoju i nisu povezane ni na koji nacin. Zato ne mozes da je pronadjes. Potrebno je da exe bude napravljen uz opciju "build with runtime packages". U tom slucaju koriste zajednicki metod za registraciju klase i sve radi onako kako ti zelis. Ako to nije ono sto zelis (jer na taj nacin ti je osnovna instalacija programa veca u odnosu na pojedinacni exe) onda mozes tu formu da stavis u obican dll, cime neke stvari gubis, a neke dobijas.
[ _deran_ @ 26.11.2006. 10:31 ] @
greska mislio sam ukljuci, po defaultu je vec iskljuceno