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!
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.