Primeira parte da série Introdução básica e domínio de componentes Asp
. Sempre quis escrever alguns aplicativos de componentes. Durante esse tempo, posso finalmente escrever algo que gosto.
Espero que depois de estudar esses tutoriais, você possa escrever seus próprios componentes como quiser.
Cada artigo pode não estar relacionado, mas apenas escreve sobre alguns problemas que surgem durante a escrita do componente.
Bem-vindos a todos para criticar e corrigir
o ambiente: winxp+vb6+sp6+visual interdev6.0
Como primeiro artigo, vamos primeiro escrever um componente relativamente simples
que executa as seguintes funções: inserir dois números e adicioná-los, retornar o resultado adicionado
, abrir vb6 e criar um novo projeto Activex DLL. Altere o nome do projeto para fCom e o nome da classe para fC1.
Clique em Menu->Ferramentas->Adicionar Processo.
Insira Adicionar no nome, selecione função como tipo, selecione público como escopo e confirme para
gerar o seguinte código. continuará a melhorá-lo.
código do programa
Opção Explícita
Função pública Adicionar (ByVal a As Long, ByVal b As Long) As Long
Adicionar=a+b
Função final
Ok, um componente simples foi escrito. Clique em menu-> Arquivo-> Gerar arquivo fCom.dll
para
confirmar
. usá-lo? Interdev, porque possui uma função de prompt de código, é consistente com o ambiente IDE do VB e é conveniente para escrever
código do programa
<%@Idioma=VBScript%>
<HTML>
<CABEÇA>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<CORPO>
<%
definir obj=servidor.CreateObject("fCom.fC1")
'Preste atenção na frase a seguir, porque a função tem um valor de retorno, você não pode escrevê-la no método a seguir, caso contrário um erro será relatado no IE
'obj.Add(3,4)
'Tipo de erro:
'Erro do compilador Microsoft VBScript (0x800A0414)
'Você não pode usar parênteses ao chamar uma sub-rotina
'/xml/fc1.asp, linha 9, coluna 12
'obj.Adicionar(3,4)
'A seguir está a maneira correta de escrever
escurecer c
c=obj.Adicionar(3,4)
Resposta.Escreva c
%>
</BODY>
</HTML>
Configure o diretório virtual, execute este arquivo asp no IE e obtenha o resultado 7.
O primeiro artigo acabou. Desejo a todos um bom estudo.
Asp Components Introdução Básica e Domínio Série 2
Como Registrar Componentes
1. O caminho absoluto do componente regsvr32
é o seguinte:
código do programa
regsvr32 c:testefc1.dll
Como o componente pode ser usado desde que esteja registrado, isso não tem nada a ver com a localização do componente.
2.
Quando esse registro é necessárioao registrar-se no gerenciador de componentes COM+
: Os componentes precisam ser registrados antes de poderem ser executados normalmente após usar os serviços COM+. Se o componente estiver registrado apenas com regsvr32, ele ainda não poderá ser usado
.
código do programa
set obj=server.createobject("Nome do projeto. Nome da classe")
Em seguida, chame seu atributo de método.
Como desinstalar o componente
1. O caminho absoluto do componente regsvr32
é o seguinte:
código do programa
regsvr32 c:testefc1.dll /u
você parâmetro componente anti-registro
2. Basta excluir o componente no gerenciador de componentes COM+.
Entrada do componente Asp e série de domínio, parte três:
Como usar propriedades
para abrir vb6 e criar um novo projeto Activex Dll. Altere o nome do projeto para fCom e o nome da classe para fC2.
Clique em Menu->Ferramentas->Adicionar Processo.
Insira myName no nome, selecione o atributo como o tipo, selecione public como o escopo e confirme
a operação novamente: insira Idade no nome, selecione o atributo como tipo, selecione público no escopo, confirme
e opere novamente: insira peopleInfo no nome, selecione função como tipo, selecione público no escopo e confirme
o código. é o seguinte:
código do programa
Opção Explícita
'Variáveis locais que contêm valores de atributos só podem ser usadas em classes
Privado mvarmyName como string
mvarAge privado como inteiro
'Deixe escrever atributos (Deixe atributos: Este processo atribui um valor a um atributo.)
Propriedade pública Let Age (ByVal vData As Integer)
mvarIdade = vDados
Fim da propriedade
'Obter atributo de leitura (este processo obtém o valor de um atributo.)
Propriedade pública obtém idade () como número inteiro
Idade = mvarIdade
End Property
Propriedade pública Let myName(ByVal vData As String)
mvarmyName = vData
End Property
Propriedade pública Obtenha myName() como string
meuNome = mvarmyNome
Fim Propriedade
Função Pública peopleInfo() As String
peopleInfo = "Nome: " & mvarmyName & "Idade: " & mvarAge
Função final
Ok, um componente simples foi escrito. Clique em menu-> Arquivo-> Gerar arquivo fCom.dll
para
confirmar
. usá-lo? Interdev, porque possui uma função de prompt de código, é consistente com o ambiente IDE do VB e é conveniente para escrever
código do programa
<%@Idioma=VBScript%>
<HTML>
<CORPO>
<%
definir obj=servidor.CreateObject("fCom.fC2")
escurecer c
'O que é chamado aqui é a propriedade Let do componente
obj.myName="Tornado"
obj.Idade =20
c=obj.peopleInfo()
Resposta.Escreva c
'O que é chamado aqui é a propriedade Get do componente
Resposta.Escreva "<br>"
Response.Write obj.meuNome
Resposta.Escreva "<br>"
Response.Write obj.Age
%>
</BODY>
</HTML>
Configure o diretório virtual e execute este arquivo asp no IE. Os resultados são os seguintes:
Nome: Tornado Idade: 20.
tornado
20
Continuação
Série de introdução e domínio do componente Asp 4
Problemas de array
Os arrays são muito usados em programas e são mais propensos a causar problemas.
Vamos dar uma olhada nisso através de um pequeno exemplo
. Projeto Activex DLL. Altere o nome do projeto para fCom e o nome da classe para fC4.
Clique em Menu->Ferramentas->Adicionar Processo.
Insira AcceptArray1 no nome, selecione subrotina como tipo, selecione público como intervalo e confirme
a operação novamente: insira. AcceptArray2 no nome e selecione a função como o tipo, selecione public como o escopo e confirme.
código do programa
'Função: Passar o endereço do array para o componente, usar a palavra-chave ByRef e atribuir e retornar
Public Sub AcceptArray1 (ByRef varray como variante) como variante
varray(0) = "Tornado"
varray(1) = "20"
End Sub
'Função: Retorna um array de strings
Função pública AcceptArray2() como variante
Dim a(2) como variante
a(0) = "Tornado"
uma(1) = "20"
AceitarArray2=a
Função Final
Ok, um componente é escrito. Clique em menu-> Arquivo-> Gerar arquivo fCom.dll
para confirmar. Haverá um arquivo fCom.dll no diretório.
Teste
o visual interdev6.0 e gere um
código de programa de arquivo asp.
<%@Idioma=VBScript%>
<HTML>
<CORPO>
<%
objeto escuro
definir obj = server.createobject("fCom.fC4")
escurecer um(2)
'Teste o método do primeiro componente
obj.AcceptArray1(a)
resposta.escreva a(0)
resposta.write "<br>"
resposta.escrever a(1)
resposta.write "<br>"
'Teste o método do segundo componente
escurecer b
b=obj.AcceptArray2()
para i = 0 para ubound (b)
Resposta.Escreva b(i)
resposta.write "<br>"
próximo
%>
</BODY>
</HTML>
Configure o diretório virtual e execute este arquivo asp no IE. Os resultados são os seguintes:
Tornado.
20
tornado
20
Para resumir:
strings e números são passados por valor ou retornados como valor de retorno.
Se passar por referência, defina o tipo do parâmetro como Variant. Fazer isso pode evitar alguns erros. No entanto, tente reduzir ao máximo os parâmetros passados por referência.
Continuação
da introdução de nível de entrada e domínio da série 5 do componente Asp.
Muitas vezes podemos ver isso ao conectar-se ao banco de dados e abrir o conjunto de registros, como segue:
código do programa
rs.Open strsql, conn,adOpenDynamic,adLockPessimista
Ao digitar ",", uma lista de tipos de cursor ou tipos de bloqueio aparecerá para seleção.
Às vezes, para simplificar, rs.open strsql,conn,1,3
é o primeiro método mais profissional. Vamos dar uma olhada em como
abrir vb6 em asp e criar um novo projeto Activex DLL. O nome do projeto é alterado para fCom e o nome da classe é alterado para fC5
código do programa
Opção Explícita
'Define o tipo de enumeração
Interface Enum Públicadig
icprimeiro = 1
icsegundo = 2
ictrês = 3
icquatro = 4
iccinco=5
icsix=6
ICserven = 7
gelo oito = 8
End Enum
'Definir função
Função pública CallDat (ByVal idig como inteiro, ByVal ics como Interfacedig) como variante
CallDat = idig * ics
Função Final
Ok, um componente é escrito. Clique em menu-> Arquivo-> Gerar arquivo fCom.dll
para confirmar. Haverá um arquivo fCom.dll no diretório.
Teste
o visual interdev6.0 e gere um
código de programa de arquivo asp.
<%@Idioma=VBScript%>
<HTML>
<CORPO>
<%
'Definição, você também pode colocar esta parte em um arquivo, assim como o conjunto de registros do ado <!--#include file="adovbs.inc"-->
const primeiro = 1
const icsegundo = 2
const ictrês = 3
const icquatro = 4
const icfive = 5
const icsix = 6
const icserven = 7
const iceight = 8
definir obj=servidor.CreateObject("fCom.fc5")
'iceight ou 8 podem ser usados aqui, mas o primeiro torna o código mais legível
a= obj.CallDat(4,iceoito)
Resposta.Escreva um
Resposta.Escreva "<br>"
a= obj.CallDat(4,8)
Resposta.Escreva um
%>
<P> </P>
</BODY>
</HTML>
Configure o diretório virtual e execute este arquivo asp no IE. Os resultados são os seguintes:
32.
32
Introdução e Domínio Básico do Componente Asp Série 6
Tratamento de Erros
Se houver um erro na página e não houver tratamento de erros, a página exibirá um erro que o usuário pode não entender.
Pode ser usado em script asp
código do programa
Em caso de erro, retomar o próximo
…
se Err.Number<>0 então
Resposta.Erro de gravação.Descrição
Terminar se
Mas e se algo der errado no componente? Este método pode detectar erros, mas como saber o erro específico?
Podemos adicionar tratamento de erros ao componente para retornar erros, para que possamos ver facilmente informações de erro mais detalhadas e nos ajudar a solucionar erros.
Use Err.Raise, Raise é usado para gerar erros de tempo de execução
Abra vb6 e crie um novo projeto Activex Dll. O nome do projeto é alterado para fCom e o nome da classe é alterado para fC6
código do programa
Opção Explícita
Sub chuveiro público1()
Em caso de erro, vá para ErrorHandle
Escureça como duplo
eu=1/0
Erro:
Err.Raise Err.Number, Err.Fonte, Err.Descrição
End Sub
'Gerar erros personalizados
Sub chuveiro público2()
Err.Raise 600, "Erro autodefinido 600", "Este é um erro ao descrever seu próprio programa"
End Sub
Ok, um componente foi gravado. Clique em menu-> Arquivo-> Gerar arquivo fCom.dll
para confirmar. Haverá um arquivo fCom.dll no diretório.
Teste
o visual interdev6.0 e gere um
código de programa de arquivo asp.
<%@Idioma=VBScript%>
<HTML>
<CORPO>
<%
'A seguinte frase é muito importante
em caso de erro, retome a seguir
definir obj=servidor.CreateObject("fCom.fc6")
obj.showerror1()
'Se não houver tratamento de erros, será gerada uma interface de erro, o que é muito pouco profissional.
'O intervalo de 0 a 512 é reservado para erros do sistema; o intervalo de 513 a 65535 pode ser usado para erros definidos pelo usuário.
'Se for um erro retido, então o número do erro no componente é consistente com o número do erro do processamento da página
se err.número <>0 então
Response.Write "Mensagem de erro" & err.number & err.Description
terminar se
Resposta.Escreva "<br>"
'Se for um erro definido pelo usuário, pode ser processado separadamente na página
obj.showerror2()
se err.número<>0 então
se err.número =600 então
Resposta.Write err.número & err.Fonte & err.Descrição
terminar se
terminar se
%>
</BODY>
</HTML>
Configure o diretório virtual e execute este arquivo asp no IE. Os resultados são os seguintes:
A mensagem de erro 11 é dividida por zero.
600 Erro autodefinido 600 Este é um erro que descreve seu próprio programa
Série de introdução e domínio para iniciantes do componente Asp, parte 7.
Ao executar os exemplos nos capítulos anteriores, você pode encontrar alguns problemas mais ou menos
, como: depois que o componente é. compilado, ele precisa ser modificado, erros como "Permissão negada, 'f:csdnfcom.dll'" etc.
Ao navegar na página asp, abra o gerenciador de tarefas e você verá um processo de dllhost.exe com o nome de usuário IWAM_YANG. IWAM_YANG irá variar dependendo do nome do computador.
Você pode usar os seguintes métodos para resolver
1. Reinicie o iis.
Encontre Ferramentas de Gerenciamento-> Serviços de Informações da Internet-> clique com o botão direito no computador local no segundo nível da árvore à esquerda no painel de controle-> todas as tarefas-> reinicie o IIS.
Neste momento você pode ver que o processo dllhost.exe foi fechado
2. A desvantagem do método acima é que todos os sites estão desligados até serem reiniciados.
Existe alguma solução para um único site ou diretório virtual? Encontre
Ferramentas Administrativas -> Serviços de Informações da Internet -> Encontre o diretório virtual onde seu componente está sendo executado no Painel de Controle. -> Clique com o botão direito em Propriedades-> No primeiro diretório virtual-> Proteção de Aplicativo-> Clique em Desinstalar.
Neste momento você pode ver que o processo dllhost.exe foi fechado
3. Se você achar isso problemático, basta encerrar o processo diretamente no Gerenciador de Tarefas do Windows
4. O último método
é encontrar as ferramentas de gerenciamento no painel de controle -> Serviços de componentes -> clique em Computador, Meu computador, Processos em execução -> Aplicativos em pool fora do processo do IIS (2860) -> clique com o botão direito para fechá-lo.
neste momento você pode ver que o processo dllhost.exe foi fechado.