Toon posts:

[Delphi] Packages + registerclas + getclass = no go ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb (In Delphi 7) het volgende probleem. Ik maak gebruik van packages, en heb in een package een form zitten (class=TfrmTest).

In de unit behorende bij dit form heb ik de volgende code opgenomen:
code:
1
2
initialization
  RegisterClass(TfrmTest);


Nu wil ik dit package run-time laden en het form ophalen middels de GetClass

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
functie.
var
  oForm: TForm;
  formClass:TFormclass;
  HandlePack: HModule;
  Test:Variant;
begin
  HandlePack:=LoadPackage('pktTest');
  If HandlePack > 0 then
    begin
       formClass:=TFormClass(GetClass('TfrmTest'));
       if Assigned(formClass) then showmessage('no shit');
    end;
end;


Als ik hier een breakpoint zet, zie ik dat formclasss na de getclass op 'nil' staat, oftewel hij kon de klasse niet ophalen.

De initialization wordt wel doorlopen, de registerclass wordt uitgevoerd. Toch kan getclass 'm niet ophalen, waarom niet?

Ik gebruik alleen de VCL, geen CLX. Ik heb al getracht om via ActiveClassgroep specifiek de VCL-classes te selecteren, zonder effect.

Iemand een idee waarom dit niet werkt?

[ Voor 4% gewijzigd door Verwijderd op 29-05-2004 15:56 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je hebt je EXE zeker niet met runtime packages gebuild? Je moet iig de RTL package als runtime package gebruiken bij je EXE. Waarom? Omdat anders je EXE en je Package ieder een andere instantie van de RTL code gebruiken en dus ook ieder een registry hebben voor de classes. Je registreerd in je package je class dus in die RTL en je EXE gaat zoeken in een andere instantie. Dat werkt dus niet :)

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
|:(

oftewel: bovenstaande klopt.. dank _/-\o_