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!

Como eu crio um componente COM+, posso utilizar essa mesma dica?
Responder comentário
Como desenvolvo esse mesmo código no Delphi 2005? Posso utilizar os mesmo comentários que vc postou aqui?
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.