Ler/Gravar em Var que está numa DLL

23/02/2006

0

Pessoal,

tenho algumas variáveis (integer, string) em uma unit que está dentro de uma DLL,

como faço pra ler ou gravar nessas variáveis???

abraço,


Eniorm

Eniorm

Responder

Posts

23/02/2006

Andremuller

só passando na assinatura do método.

se tu usasse packages aí era totalmente transparente


Responder

24/02/2006

Eniorm

só passando na assinatura do método.



e neste caso como devo proceder?
teria uma explicação desse funcionamento?


bye


Responder

24/02/2006

Andremuller

você tem a assinatura de método que está exportando. Nessa assinatura inclui os parâmetros que precisa. Foi?


Responder

24/02/2006

Eniorm

você tem a assinatura de método que está exportando. Nessa assinatura inclui os parâmetros que precisa. Foi?


Amigo, me desculpe pela ignorância, mas não estou acostumado a trabalhar com DLLs, poderia me dar um exemplo de código?

Abraço


Responder

24/02/2006

Andremuller

No dpr da tua dll tu exporta métodos, tipo:

library TesteDll;

(...)

procedure MostrarMensagem(WndHandle: THandle; Mensagem: string);
var
  frm: TFormMensagem;
begin
  Application.Handle := WndHandle;
  frm := TFormMensagem.Create(nil);
  try
    frm.ShowModal;
  finally
    frm.Free;
  end;
end;

exports MostrarMensagem;

begin
end.


na tua aplicação tu carrega os métodos, tipo:

procedure TForm1.ExecutarMensagem;
var
  Handle: THandle;
  MM: procedure(WndHandle: THandle; Mensagem: string);
begin
  Handle := 0;
  try
    Screen.Cursor := crHourGlass;
    Handle := LoadLibrary(PAnsiChar(´TesteDll.dll´));
    if Handle = 0 then
      ShowMessage(´Não carregou.´)
    else
    begin
      MM := GetProcAddress(Handle, ´MostrarMensagem´);
      MM(Application.Handle, Edit1.Text);
    end;
  finally
    FreeLibrary(Handle);
    Screen.Cursor := crDefault;
  end;
end;


O Handle que eu passo no exemplo é para a dll aparecer na mesma janela da aplicação principal. MM é de declaração igual ao método exportado e é através dele que disparamos o que está na dll.

Então se tu precisar passar mais alguma coisa na dll inclui junto dos parâmetros. No exemplo só passo Mensagem: string, mas poderia ser Mensagem1, Mensagem2: string, o que também mudaria a declaração de MM.

Foi?


Responder

24/02/2006

Andremuller

não esqueça de que a unit ShareMem deve ser a primeira unit declarada nos dois dprs


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar