Segunda-feira, 15 de setembro de 2003 às 01h59

ASP em Delphi - Parte 2

Olá galera, tudo bem?

Nesta coluna daremos continuidade sobre como construirmos objetos ASP dentro do ambiente Delphi. Como comentamos na coluna passada, este exemplo é apenas para nossa compreensão e, embora simples, servirá de referência quando você for criar um objeto em seus trabalhos.

Criando métodos

" Clique no objeto IDemo (ver Figura 5 da coluna anterior);
" Clique no botão New Method para criarmos um novo método;

" Chame o novo método de Escrever;
" Clique no botão Refresh Implementation para seu código Delphi seja atualizado;
" Pressione a tecla F12 para alternarmos no editor de código do Delphi;
" Note que o Delphi criou um arquivo extra chamado Exemplo_TLB. Ele é basicamente a definição da estrutura do nosso objeto. Não precisaremos mexer nele, pois todo o seu código é gerado pelo próprio ambiente de desenvolvimento.
" Escolha a guia da unidade Exemplo1. É nela que são escritos todos os códigos necessários para o nosso objeto ActiveX.

Veja a seguir o código gerado inicialmente pelo Delphi:

unit Exemplo1;

interface

uses
ComObj, ActiveX, AspTlb, Exemplo_TLB, StdVcl;

type
TDemo = class(TASPObject, IDemo)
protected
procedure OnEndPage; safecall;
procedure OnStartPage(const AScriptingContext: IUnknown); safecall;
procedure Escrever; safecall;
end;

implementation

uses ComServ;

procedure TDemo.OnEndPage;
begin
inherited OnEndPage;
end;

procedure TDemo.OnStartPage(const AScriptingContext: IUnknown);
begin
inherited OnStartPage(AScriptingContext);
end;

procedure TDemo.Escrever;
begin

end;

initialization
TAutoObjectFactory.Create(ComServer, TDemo, Class_Demo,
ciMultiInstance, tmApartment);
end.

Vamos escrever nosso código dentro do bloco reservado para a procedure Escrever.

procedure TDemo.Escrever;
begin
Response.Write('iMasters - Coluna Delphi');
end;

Você deve estar se perguntando: Como é possível usar um objeto do ASP (neste caso o Response) dentro da unidade Delphi?

Observe na sua cláusula uses da unidade Exemplo1.pas que o Delphi adicionou automaticamente à biblioteca necessária para usar as Classes do ASP (AspTlb), dentro do seu projeto.

Dessa forma, você poderá utilizar em seu código Delphi todos os objetos built-in do ASP: Response, Request, Session, Server, entre outros. Parece até que estamos programando em ASP, não é mesmo?!

Salve seu projeto e compile-o, gerando assim a DLL do componente.

Nota: Recomendo gerar essa DLL no diretório onde a página ASP será executada. Para isso, basta salvar seu projeto nesta pasta, ou então modificar no menu Project | Options, Directory Conditionals, Output Directory. O diretório onde a DLL será criada, por exemplo: C:inetputwwwrootimasters

Para finalizar e tornar possível visualizarmos nosso exemplo, uma DLL ActiveX precisa ser registrada no Windows para poder ser instanciada pela página ASP.

Você pode fazer isso de duas formas:

01. Clique sobre o botão Register Type Library, na tela de interface da classe, para registrar seu componente:

2. Outra forma de se registrar o componente é: Vá ao prompt do MSDOS. Entre na pasta onde sua DLL foi gerada e digite: C:WINDOWSSYSTEMREGSVR32 Exemplo.dll

Após registrar o componente, precisaremos então criar a página ASP que fará sua chamada.
Volte ao editor de código do Delphi e abra o arquivo Exemplo.ASP

Modifique esse código para:

<HTML>
<HEAD>
<TITLE>Teste de Componente ASP</TITLE>
</HEAD>
<BODY>
<%
Set DelphiASPObj = Server.CreateObject("Exemplo.Demo")
DelphiASPObj.Escrever
Set DelphiASPObj = Nothing
%>
</BODY>
</HTML>

Perceba na instanciação do objeto que chamamos a classe (Exemplo) e logo em seguida o objeto (Demo).

Salve seu código ASP na pasta onde será executado.

Bem pessoal, espero que tenham gostado. Escrevam-me pedindo algum exemplo mais prático e o mais solicitado escreverei nas próximas colunas. Um abraço!

2 comentários

 marcus vinicius
28/12/2004 20h21

Henrique_gyn

Como eu crio um componente COM+, posso utilizar essa mesma dica?

 Fillpe
14/01/2005 23h38

no Delphi 2005

Como desenvolvo esse mesmo código no Delphi 2005? Posso utilizar os mesmo comentários que vc postou aqui?

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Marcelo Varela é professor Delphi, SQL Server e ASP em cursos Cliente/Servidor.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.