DLLs! Porque e Como utilizar

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (4)  (0)

Veja neste artigo de Fabricio Desbessel, como criar e utilizar DLLs em suas aplicações Win32. Acesso exclusivo para Assinantes.

 

DLLs são bibliotecas de vinculação dinâmicas (Dynamic Link Libraries) que possibilitam o compartilhamento de funções ou procedimentos entre diferentes softwares. Uma vantagem que se tem ao utilizar DLLs é que, mesmo sendo utilizado por vários softwares, ela será carregada um única vez na memória do computador e quando a alteração ou substituição de versão da DLL, não será necessária uma compilação dos softwares que à utilizam.

Então, por que utilizar?

1º Pense nos vários softwares que você já desenvolveu e que precisaram utilizar as mesmas funções.

2º Quando alterava uma função era necessário acertar em todos softwares.

3º Onde estão sua funções? No formulário principal?

4º Multi linguagem. Posso utilizar DLLs criadas em qualquer linguagem, assim como qualquer linguagem pode utilizar uma DLL desenvolvida em Delphi (seguindo todos os padrões Windows).

 

Então, antes de encher o formulário principal de sua aplicação com funções para todo o aplicativo pense seriamente em criar uma DLL para armazená-las.

Mas, para criar ou utilizar uma DLL precisamos concordar com as convenções de chamadas, com os tipos de parâmetros e outros detalhes que veremos a seguir.

Toda função ou procedimento de uma DLL deve seguir estas diretrizes:

·         Estar listada na cláusula exports da DLL. Através disso a rotina pode ser acessada externamente.

·         As funções exportadas devem conter a instrução stdcall ao final de sua declaração. Isso possibilita a passagem de parâmetros padrão do Win32.

·         Os tipos de parâmetros devem ser os tipos padrões do Windows (a maioria compatível com o C).

·         As DLLs criadas no Delphi devem capturar todas as possíveis exceções em sua execução. Isso quer dizer que temos que tratar exceções em todo bloco.

 

Para colocarmos a mão na massa, criaremos um DLL que terá uma função para calcular o ICMS de um produto. Abra o Delphi 7 e acesse o menu File | New | Other e escolha DLL Wizard. Antes do begin codifique a função:

 

function icms(valor, aliquota: Double): Double;

begin

  try

    Result:=(valor*aliquota)/100;

  except

    Result:=0;

  end;

end;

 

E abaixo da função é necessário exportar a mesma:

 

exports

  icms;

 

Agora compile pressionando CTRL+F9. Pronto a DLL já deve ter estar criada no mesmo diretório que você salvou o projeto. Então passamos para a utilização dessa DLL. Crie uma nova aplicação através do menu File | New | Application. Adicione e configure os componentes conforme tabela:

 

Componente

Name

Caption

Text

Label1

lblValor

Valor

-

Label2

lblAliquota

Aliquota

-

Label3

lblIcms

ICMS

-

Edit1

edtValor

-

Apagado

Edit2

edtAliquota

-

Apagado

Edit3

edtIcms

-

Apagado

Button1

btnCalcular

Calcular

 

Tabela 1. Configuração dos componentes necessários

Obs: Apagado significa deixar a propriedade Text em branco (sem nada).

 

Ao final da configuração a aparência deve ser assim:

 

Figura 1. Aparência do software

Agora clique duas vezes no botão calcular e coloque o seguinte código:

 

var

  resultado: Double;

begin

  //A variável resultado recebe o retorno da função contida na DLL

  Resultado := icms(StrToFloat(edtValor.Text),

  StrToFloat(edtAliquota.Text));

  edtIcms.Text := Format('%8.2m', [resultado]);

end;

 

Para funcionar ainda é necessário fazer a declaração que indique que a função icms está contida na DLL funções.dll. Então, abaixo da cláusula implementation declare:

 

function icms(valor, aliquota:Double): Double; stdcall; external 'funcoes.dll';

 

Também é necessário copiar a DLL (funcoes.dll) para o mesmo diretório do software. Pronto, agora compile e teste.

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?