Primera parte de la serie Introducción básica y dominio de los componentes Asp
. Siempre quise escribir algunas aplicaciones de componentes. Durante este tiempo, finalmente puedo escribir algo que me guste.
Espero que después de estudiar estos tutoriales, puedas escribir tus propios componentes como quieras.
Es posible que cada artículo no esté relacionado, pero solo escribe sobre algunos problemas que surgen durante la redacción de componentes.
Bienvenidos a todos a criticar y corregir
el entorno: winxp+vb6+sp6+visual interdev6.0
Como primer artículo, primero escribamos un componente relativamente simple
que realice las siguientes funciones: ingrese dos números y agréguelos, devuelva el resultado agregado
, abra vb6 y cree un nuevo proyecto Activex Dll. Cambie el nombre del proyecto a fCom y el nombre de la clase a fC1.
Haga clic en Menú->Herramientas->Agregar proceso.
Ingresamos Agregar en el nombre, seleccionamos función como tipo, seleccionamos público como alcance y luego confirmamos para
generar el siguiente código. Seguirá mejorándolo.
código de programa
Opción explícita
Función pública Agregar (ByVal a As Long, ByVal b As Long) As Long
Sumar=a+b
Función final
Ok, se ha escrito un componente simple. Haga clic en menú->Archivo->Generar archivo fCom.dll
para confirmar. Habrá un archivo fCom.dll en el directorio.
Pruebe
abrir visual interdev6.0 y generar un archivo asp. ¿Usarlo? Interdev, porque tiene una función de solicitud de código, es consistente con el entorno IDE de VB y es conveniente para escribir.
código de programa
<%@ Idioma=VBScript %>
<HTML>
<CABEZA>
<META NAME="GENERADOR" Contenido="Microsoft Visual Studio 6.0">
</CABEZA>
<CUERPO>
<%
establecer obj=server.CreateObject("fCom.fC1")
'Preste atención a la siguiente oración, debido a que la función tiene un valor de retorno, no puede escribirla en el siguiente método; de lo contrario, se informará un error en IE
'obj.Add(3,4)
'Tipo de error:
'Error del compilador de Microsoft VBScript (0x800A0414)
'No puedes usar paréntesis al llamar a una subrutina
'/xml/fc1.asp, línea 9, columna 12
'obj.Añadir(3,4)
'La siguiente es la forma correcta de escribir
tenue c
c=obj.Añadir(3,4)
Respuesta.Escribir c
%>
</CUERPO>
</HTML>
Configure el directorio virtual, ejecute este archivo asp en IE y obtenga el resultado 7.
El primer artículo ha terminado. Les deseo a todos un feliz estudio.
Componentes Asp Introducción básica y dominio Serie 2
Cómo registrar componentes
1. La ruta absoluta del componente regsvr32
es la siguiente:
código de programa
regsvr32 c:pruebafc1.dll
Dado que el componente se puede utilizar siempre que esté registrado, no tiene nada que ver con la ubicación del componente.
2.
¿Cuándo se requiere este registroal registrarse en el administrador de componentes COM+
? Los componentes deben registrarse antes de que puedan ejecutarse normalmente después de usar los servicios COM+. Si el componente solo está registrado con regsvr32, todavía no se puede utilizar
. Cómo utilizar el componente.
código de programa
set obj=server.createobject("Nombre del proyecto. Nombre de clase")
Luego llame a su atributo de método.
Cómo desinstalar el componente
1. La ruta absoluta del componente regsvr32
es la siguiente:
código de programa
regsvr32 c:testfc1.dll /u
u parámetro anti-registro componente
2. Simplemente elimine el componente en el administrador de componentes COM+.
Serie de dominio y entrada de componentes Asp, parte tres:
Cómo usar las propiedades
para abrir vb6 y crear un nuevo proyecto Activex Dll. Cambie el nombre del proyecto a fCom y el nombre de la clase a fC2.
Haga clic en Menú->Herramientas->Agregar proceso.
Ingresamos myName en el nombre, seleccionamos el atributo como tipo, seleccionamos público como alcance y luego confirmamos
la operación nuevamente: ingrese Edad en el nombre, seleccione el atributo como tipo, seleccione público en el alcance y luego confirme
y opere nuevamente: ingrese peopleInfo en el nombre, seleccione función como tipo, seleccione público en el alcance y luego confirme
el código. es el siguiente:
código de programa
Opción explícita
'Las variables locales que contienen valores de atributos solo se pueden usar en clases
mvarmyName privado como cadena
mvarAge privado como entero
'Dejar escribir atributos (Dejar atributos: este proceso asigna un valor a un atributo).
Propiedad pública Let Age (ByVal vData como entero)
mvarEdad = vDatos
Propiedad final
'Obtener atributo de lectura (Este proceso obtiene el valor de un atributo).
Propiedad pública Obtener edad () como número entero
Edad = mvarEdad
Propiedad final
Propiedad pública Let myName(ByVal vData As String)
mvarmyName = vData
Propiedad final
Propiedad pública Obtener myName() como cadena
miNombre = mvarmyName
Propiedad final
Función pública peopleInfo() como cadena
peopleInfo = "Nombre: " & mvarmyName & " Edad: " & mvarAge
Función final
Ok, se ha escrito un componente simple. Haga clic en menú->Archivo->Generar archivo fCom.dll
para confirmar. Habrá un archivo fCom.dll en el directorio.
Pruebe
abrir visual interdev6.0 y generar un archivo asp. ¿Usarlo? Interdev, porque tiene una función de solicitud de código, es consistente con el entorno IDE de VB y es conveniente para escribir.
código de programa
<%@ Idioma=VBScript %>
<HTML>
<CUERPO>
<%
establecer obj=server.CreateObject("fCom.fC2")
tenue c
'Lo que se llama aquí es la propiedad Let del componente
obj.myName="Tornado"
obj.Edad =20
c=obj.peopleInfo()
Respuesta.Escribir c
'Lo que se llama aquí es la propiedad Get del componente
Respuesta.Escribe "<br>"
Respuesta.Escribir obj.miNombre
Respuesta.Escribe "<br>"
Respuesta.Escribir obj.Edad
%>
</CUERPO>
</HTML>
Configure el directorio virtual y ejecute este archivo asp en IE. Los resultados son los siguientes:
Nombre: Tornado Edad: 20.
tornado
20
Continuará
Serie de dominio y introducción de nivel básico de componentes Asp 4
Problemas con las matrices
Las matrices se usan mucho en los programas y es más probable que causen problemas.
Veámoslo con un pequeño ejemplo
. Abra vb6 y cree uno nuevo. Proyecto Activex DLL. Cambie el nombre del proyecto a fCom y el nombre de la clase a fC4.
Haga clic en Menú->Herramientas->Agregar proceso
en el nombre, seleccione subrutina como tipo, seleccione público como rango y luego confirme
la operación nuevamente: ingrese. AcepteArray2 en el nombre y seleccione la función como tipo, seleccione público como alcance y luego confirme.
código de programa
'Función: pasa la dirección de la matriz al componente, usa la palabra clave ByRef y asigna y devuelve
Public Sub AcceptArray1 (ByRef varray como variante) como variante
varray(0) = "Tornado"
variedad(1) = "20"
Función
End Sub
': Devuelve una matriz de cadenas
Función pública AcceptArray2() como variante
Atenuar a(2) como variante
a(0) = "Tornado"
un(1) = "20"
Aceptarmatriz2=a
Finalizar función
Ok, se escribe un componente. Haga clic en menú->Archivo->Generar archivo fCom.dll
para confirmar. Habrá un archivo fCom.dll en el directorio.
Pruebe
abrir Visual Interdev6.0 y generar un
código de programa de archivo ASP.
<%@ Idioma=VBScript %>
<HTML>
<CUERPO>
<%
objeto oscuro
establecer obj = server.createobject("fCom.fC4")
tenue a(2)
'Prueba el método del primer componente
obj.AcceptArray1(a)
respuesta.escribe un(0)
respuesta.escribir "<br>"
respuesta.escribe un(1)
respuesta.escribir "<br>"
'Prueba el método del segundo componente
tenue b
b=obj.AcceptArray2()
para i=0 a ubound(b)
Respuesta.Escribir b(i)
respuesta.escribir "<br>"
próximo
%>
</CUERPO>
</HTML>
Configure el directorio virtual y ejecute este archivo asp en IE. Los resultados son los siguientes:
Tornado.
20
tornado
20
Para resumir:
las cadenas y los números se pasan por valor o se devuelven como valor de retorno.
Si se pasan por referencia, establezca el tipo de parámetro en Variante. Hacer esto puede evitar algunos errores. Sin embargo, intente reducir los parámetros pasados por referencia tanto como sea posible.
Continuará.
Serie de dominio y introducción de nivel de entrada del componente Asp 5.
A menudo podemos ver esto al conectarnos a la base de datos y abrir el conjunto de registros, de la siguiente manera:
código de programa
rs.Open strsql, conexión, adOpenDynamic, adLockPesimista
Al escribir ",", aparecerá una lista de tipos de cursor o tipos de bloqueo para su selección.
A veces, para simplificar, usamos directamente rs.open strsql,conn,1,3.
¿Es el primer método más profesional? Veamos cómo
abrir vb6 en asp y crear un nuevo proyecto Activex Dll. El nombre del proyecto se cambia a fCom y el nombre de la clase se cambia a fC5
código de programa
Opción explícita
'Definir tipo de enumeración
Interfaz de enumeración pública
icprimero = 1
icsegundo = 2
ictres = 3
iccuatro = 4
iccinco=5
icsix=6
icserven=7
ocho hielos = 8
End Enum
'Definir función
Función pública CallDat (ByVal idig como entero, ByVal ics como Interfacedig) como variante
CallDat = idig * ics
Finalizar función
Ok, se escribe un componente. Haga clic en menú->Archivo->Generar archivo fCom.dll
para confirmar. Habrá un archivo fCom.dll en el directorio.
Pruebe
abrir Visual Interdev6.0 y generar un
código de programa de archivo ASP.
<%@ Idioma=VBScript %>
<HTML>
<CUERPO>
<%
'Definición, también puedes poner esta parte en un archivo, al igual que el conjunto de registros de ADO <!--#include file="adovbs.inc"-->
constante icprimero = 1
constante icsegundo = 2
constante ictres = 3
constante iccuatro = 4
constante iccinco = 5
constante icsix = 6
constante icserven = 7
constante ocho = 8
establecer obj=server.CreateObject("fCom.fc5")
Aquí se pueden usar 'iceight u 8, pero el primero hace que el código sea más legible
a= obj.CallDat(4,iceocho)
Respuesta.Escribe un
Respuesta.Escribe "<br>"
a=obj.CallDat(4,8)
Respuesta.Escribe un
%>
<P> </P>
</CUERPO>
</HTML>
Configure el directorio virtual y ejecute este archivo asp en IE. Los resultados son los siguientes:
32.
32
Componente Asp Introducción básica y dominio Serie 6
Manejo de errores
Si hay un error en la página y no hay manejo de errores, entonces la página mostrará un error que el usuario puede no entender.
Se puede utilizar en script asp.
código de programa
En caso de error Continuar siguiente
…
si Err.Number<>0 entonces
Respuesta.Escribir Err.Descripción
terminar si
¿Pero qué pasa si algo sale mal en el componente? Este método puede detectar errores, pero ¿cómo saber el error específico?
Podemos agregar manejo de errores al componente para devolver errores, de modo que podamos ver fácilmente información de errores más detallada y ayudarnos a solucionar errores.
Utilice Err.Raise, Raise se utiliza para generar errores de tiempo de ejecución.
Abra vb6 y cree un nuevo proyecto Activex Dll. El nombre del proyecto se cambia a fCom y el nombre de la clase se cambia a fC6
código de programa
Opción explícita
Sub público showerror1()
En caso de error Ir a ErrorHandle
Atenuar como doble
yo=1/0
Manejo de errores:
Err.Elevar Err.Número, Err.Fuente, Err.Descripción
End Sub
'Generar errores personalizados
Sub público showerror2()
Err.Raise 600, "Error autodefinido 600", "Este es un error que describe su propio programa"
End Sub
Ok, se escribe un componente. Haga clic en menú->Archivo->Generar archivo fCom.dll
para confirmar. Habrá un archivo fCom.dll en el directorio.
Pruebe
abrir visual interdev6.0 y generar un
código de programa de archivo asp.
<%@ Idioma=VBScript %>
<HTML>
<CUERPO>
<%
'La siguiente frase es muy importante
en caso de error reanudar siguiente
establecer obj=server.CreateObject("fCom.fc6")
obj.showerror1()
'Si no hay manejo de errores, se generará una interfaz de error, lo cual es muy poco profesional.
'El rango de 0 a 512 está reservado para errores del sistema; el rango de 513 a 65535 se puede utilizar para errores definidos por el usuario.
'Si es un error retenido, entonces el número de error en el componente es consistente con el número de error del procesamiento de la página.
si número de error <>0 entonces
Respuesta.Escribir "Mensaje de error" y número de error y descripción de error
terminar si
Respuesta.Escribe "<br>"
'Si es un error definido por el usuario, se puede procesar por separado en la página
obj.showerror2()
si número de error <> 0 entonces
si número de error = 600 entonces
Respuesta.Escribir número.err.Fuente.err.Descripción error.
terminar si
terminar si
%>
</CUERPO>
</HTML>
Configure el directorio virtual y ejecute este archivo asp en IE. Los resultados son los siguientes:
El mensaje de error 11 está dividido por cero.
600 Error autodefinido 600 Este es un error que describe su propio programa
Introducción y dominio para principiantes del componente Asp, Parte 7.
Al ejecutar los ejemplos de los capítulos anteriores, puede encontrar algunos problemas más o menos
, como: después de que el componente esté. compilado, es necesario modificarlo, se producen errores como "Permiso denegado, 'f:csdnfcom.dll'", etc.
Cuando navegue por la página ASP, abra el administrador de tareas y verá un proceso de dllhost.exe con el nombre de usuario IWAM_YANG. IWAM_YANG variará según el nombre de la computadora.
Puede utilizar los siguientes métodos para resolver
1. Reinicie iis.
Busque Herramientas de administración->Servicios de información de Internet->haga clic derecho en la computadora local en el segundo nivel del árbol a la izquierda en el panel de control->todas las tareas->reinicie IIS.
En este momento puede ver que el proceso dllhost.exe se ha cerrado
2. La desventaja del método anterior es que todos los sitios web se cierran actualmente hasta que se reinician.
¿Existe alguna solución para un único sitio web o directorio virtual? Busque
Herramientas administrativas -> Servicios de información de Internet -> Busque el directorio virtual donde se ejecuta su componente en el Panel de control. ->Haga clic derecho en Propiedades->En el primer directorio virtual->Protección de aplicaciones->Haga clic en Desinstalar.
En este momento puede ver que el proceso dllhost.exe se ha cerrado
3. Si le resulta problemático, simplemente finalice el proceso directamente en el Administrador de tareas de Windows
4. El último método
es encontrar las herramientas de administración en el panel de control -> Servicios de componentes -> hacer clic en Computadora, Mi PC, Procesos en ejecución -> Aplicaciones agrupadas fuera de proceso de IIS (2860) -> hacer clic derecho para cerrarlo.
en este momento puede ver que el proceso dllhost.exe se ha cerrado.