[Tutorial] Introdução a DLLs no Delphi

Started by TGA, 28 de November , 2006, 03:09:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TGA

Introdução a DLLs no Delphi

Primeira mente temos que entender o que é uma DLL, pode dizer que a DLL nada mais é do que uma
Biblioteca de Ligação Dinâmica, que pode ser chamada por outras aplicações, ou até mesmo por outras
DLLs. Uma DLL contém o seu código (Rotinas) compartilhável, podendo ser acessado por outros programas,
como em nosso exemplo vamos criar uma DLL a partir do delphi, mas podemos usar a mesma DLL em uma
outra aplicação feita em C, C++ e daí por diante, vamos observar abaixo o código de uma DLL, veja como é
simples.

library DLL;

uses
  SysUtils,Classes,windows;

procedure Msg;
  begin
    MessageBox (0,'DLL teste OK','Teste',0);
  end;

 exports Msg;

begin
end.


Explicando o código acima,

Library DLL;
 Nome dado a DLL (DLL).


Uses SysUtils, Classes, Windows;
 Bibliotecas usadas.


Procedure Msg
Begin
  MessageBox(0,'DLL teste OK','Teste',0);
End;

Criamos um procedimento que apenas exibe uma mensagem na tela, como se fosse uma função, que
iremos chamar através de uma aplicação feita no delphi, chamaremos esta função de dentro da DLL.


Exporte Msg;
Esta linha é extremamente importante, pois é através dela que iremos exportar as Funções e procedimentos
 que queremos compartilhar, se nos tivermos 10 funções dentro da DLL, e exportar só 4, poderíamos usar
somente as  4 exportadas, as outras 6 ficariam disponíveis apenas para acesso local da própria DLL.


CHAMANDO/USANDO UMA DLL APARTIR DO DELPHI

Para Chamar uma DLL e uma função dentro da DLL a partir do delphi, é muito simples, como exemplo
 vamos pegar a DLL criada acima, vamos chamar a Procedure Msg, ok, para isto teríamos que dizer ao
 delphi, qual DLL e qual Rotina dentro desta DLL que queremos utilizar, acima de Implementation adicione
 a seguinte linha de comando.

QuoteProcedure Msg; external 'DLL.dll';

A linha de código acima fala para o delphi que vamos usar a Procedure MSG da DLL 'Dll.dll', o parâmetro
 external, é o responsável por dizer qual DLL iremos utilizar externamente, ao invés de utilizar procedimentos (Procedure), podemos utilizar Funções (Function) sem problema, já que falamos para o delphi qual DLL e
qual rotina desta DLL iremos utilizar, agora basta chamar a rotina, como exemplo, insira um Botão no Fomr1,
 e chame a função normalmente, observe abaixo.

procedure TForm1.Button1Click(Sender: TObject);
begin
  Msg;
end;


Moleza né, agora vamos ver todo o código fonte da DLL e da nossa Aplicação.

DLL

library DLL;

uses
  SysUtils,Classes,windows;

procedure Msg;
  begin
    messagebox(0,'DLL tesdato OK','Teste',0);
  end;

  exports Msg;

begin
end.



Aplicação.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

  procedure Msg; external 'DLL.dll';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Msg;
end;

end.


Bom com os dados acima é fácil de entender e de criar uma DLL, para iniciar a estrutura de uma DLL no
delphi, acesso o Menu File > New > Other > DLL Wizard e de OK



Pronto já temos a estrutura da DLL montada, agora basta seguir os passos explicados anteriormente e
construir a sua própria DLL com suas rotinas, espero que tenha dado para entender como criar e como
 utilizar a DLL a partir delphi.
Obs. Não esqueça de salvar a dll no mesmo diretório do aplicativo.

Para ver o funcionamento na pratica, assista ao vídeo de demonstração.

Download Video
http://rapidshare.com/files/5192086/Delphi_Dll.rar.html


By TGA
"A IMAGINAÇÃO É MAIS IMPORTANTE QUE O CONHECIMENTO"
__________________________________________________________

Hacker Xtreme

Oo FODA!!!!!! to ficando loko com estes tutos maneiros :P !!!

DarkGenesis

Parabéns TGA, como sempre trazendo ótimos tutos e videos para nossa família.

Ponto Positivo

TGA

Obrigado, espero sempre estar ajudando a está bela comunidade.
abraços..

TGA
"A IMAGINAÇÃO É MAIS IMPORTANTE QUE O CONHECIMENTO"
__________________________________________________________

rodweb

Ae TGA, agora que tive um tempo li o tutorial e vi o video, tah de parabéns denovo cara, muito bem explicado, deu pra entender certinho, vlws...continua com os tutos ae...

Flws...

Hacker Xtreme

e agora como fazemos para editar um comando de uma dll tipo editar uma função sei lá, editar algo em um dll em run-time! como fazemos?