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

ASP em Delphi - Parte 2

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

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.