GARANTIR DESCONTO

Fórum Carregar pacote (form) dinamicamente #357568

24/04/2008

0

Olá pessoal,

Seguindo umas video aulas da CD eu estou dividindo meu novo sistema em módulos para modularizar ele.

Tenho um pacote com 1 formulário e criei a chamada lá:

type
  TfrmLogin = class(TfrmPadrao)
    Label1: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  // Para chamada externa
  // ********************************
  procedure ExecutaModulo; stdcall;
  exports ExecutaModulo;
  // ********************************
implementation

{$R *.dfm}

procedure ExecutaModulo; stdcall;
var
  Frm: TfrmLogin;
begin

  Frm := TfrmLogin.Create(Application);

  try
    Frm.ShowModal;
  finally
    Frm.Release;
    FreeAndNil(Frm);
  end;
 
end;

end. 


Compila o pacote na boa.

No meu programa principal (em um evento CLICK de um botão):

type
  TExecutaModulo = procedure; stdcall;

var
  loHandle: THandle;
  ExecutaModulo: TExecutaModulo;
begin
  loHandle := LoadLibrary(´PacoteTeste.bpl´);
  if loHandle > 0 then
    begin
    @ExecutaModulo := GetProcAddress(lohandle, ´ExecutaModulo´);
    ExecutaModulo;
    FreeLibrary(loHandle);
    end
  else
    Showmessage(´modulo não encontrado´);
end;


Vejam que se eu colocar o nome do pacote errado ele acusa o erro (MÓDULO NÃO ENCONTRADO).

Ele executa corretamente até a linha que tem o GetProcAddress mas quando chama mesmo o

ExecutaModulo;

Ele acusa o erro:

Access violation at address 00CACCB7 in modulo ´vcl70.bpl´. Read address 00000000000.


Alguém poderia me ajudar????? Valeu!


Romulocpd

Romulocpd

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar