Первая часть серии «Базовое введение и освоение компонентов Asp»
. Мне всегда хотелось написать какие-нибудь компонентные приложения. За это время я наконец-то смог написать то, что мне нравится.
Я надеюсь, что после изучения этих уроков вы сможете писать свои собственные компоненты по своему усмотрению.
Каждая статья может быть не по теме, а просто писать о некоторых проблемах, возникающих при написании компонентов.
Приглашаем всех покритиковать и исправить
окружение: winxp+vb6+sp6+visual interdev6.0
В качестве первой статьи давайте сначала напишем относительно простой компонент
, который выполняет следующие функции: введите два числа и сложите их, верните добавленный результат
, откройте vb6 и создайте новый проект Activex Dll. Измените имя проекта на fCom и имя класса на fC1.
Нажмите «Меню» -> «Инструменты» -> «Добавить процесс».
Введите «Добавить» в качестве типа, выберите «Общедоступный» в качестве области действия, а затем подтвердите, чтобы
сгенерировать следующий код. будем продолжать его улучшать.
программный код
Опция явная
Открытая функция Add(ByVal a As Long, ByVal b As Long) As Long
Добавить=а+б
Конечная функция
Хорошо, простой компонент написан. Нажмите меню->Файл->Создать файл fCom.dll
для подтверждения. В каталоге будет файл fCom.dll.
Проверьте,
откройте визуальный файл interdev6.0 и сгенерируйте файл asp. использовать его Interdev, поскольку он имеет функцию подсказки кода, совместим со средой IDE VB и удобен для написания?
программный код
<%@ Language=VBScript %>
<HTML>
<ГОЛОВКА>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<ТЕЛО>
<%
set obj=server.CreateObject("fCom.fC1")
'Обратите внимание на следующее предложение, поскольку функция имеет возвращаемое значение, вы не можете записать его в следующий метод, иначе в IE будет сообщено об ошибке
'obj.Add(3,4)
'Тип ошибки:
«Ошибка компилятора Microsoft VBScript (0x800A0414)
'Вы не можете использовать круглые скобки при вызове подпрограммы
'/xml/fc1.asp, строка 9, столбец 12
'obj.Add(3,4)
'Ниже правильный способ написать
тусклый с
c=obj.Добавить(3,4)
Ответ.Написать c
%>
</ТЕЛО>
</HTML>
Настройте виртуальный каталог, запустите этот asp-файл в IE и получите результат 7.
Первая статья окончена. Желаю всем приятного изучения.
Основные сведения о компонентах Asp и серия мастер-классов 2.
Как зарегистрировать компоненты
1. Абсолютный путь к компоненту regsvr32
выглядит следующим образом:
программный код
regsvr32 c:testfc1.dll
Поскольку компонент можно использовать, пока он зарегистрирован, это не имеет никакого отношения к местоположению компонента.
2.
Когда требуется эта регистрацияпри регистрации в диспетчере компонентов COM+
: Компоненты необходимо зарегистрировать, прежде чем они смогут нормально работать после использования служб COM+. Если компонент зарегистрирован только в regsvr32, его все равно нельзя использовать
. Как использовать компонент.
программный код
set obj=server.createobject("Имя проекта. Имя класса")
Затем вызовите его атрибут метода.
Как удалить компонент
1. Абсолютный путь к компоненту regsvr32
выглядит следующим образом:
программный код
regsvr32 c:testfc1.dll /u
Компонент антирегистрации параметров u
2. Просто удалите компонент в диспетчере компонентов COM+.
Запись о компоненте Asp и третья часть мастер-класса:
Как использовать свойства
для открытия vb6 и создания нового проекта Activex Dll. Измените имя проекта на fCom и имя класса на fC2.
Нажмите «Меню» -> «Инструменты» -> «Добавить процесс».
Вводим имя «myName», выбираем атрибут в качестве типа, выбираем «public» в качестве области действия и затем
еще раз подтверждаем операцию: введите «Возраст» в имени, выберите атрибут в качестве типа, выберите «Общественный» в области, а затем подтвердите
и повторите действия: введите «peopleInfo» в имя, выберите функцию в качестве типа, выберите «Общественный» в области, а затем подтвердите
код. заключается в следующем:
программный код
Опция явная
'Локальные переменные, содержащие значения атрибутов, могут использоваться только в классах
Частное имя mvarmyName в виде строки
Частный mvarAge как целое число
'Позвольте записать атрибуты (Позвольте атрибутам: этот процесс присваивает значение атрибуту.)
Открытое свойство Let Age (ByVal vData как целое число)
mvarAge = vData
Конечная собственность
'Получить атрибут чтения (этот процесс получает значение атрибута.)
Открытая собственность Get Age() как целое число
Возраст = mvarAge
свойство End Property
Let myName(ByVal vData As String)
mvarmyName = vData
свойство End Property
Получить myName() как строку
моеИмя = имямварми
конечного свойства
PeopleInfo() в виде строки
PeopleInfo = "Имя: " & mvarmyName & " Возраст: " & mvarAge
Конечная функция
Хорошо, простой компонент написан. Нажмите меню->Файл->Создать файл fCom.dll
для подтверждения. В каталоге будет файл fCom.dll.
Проверьте,
откройте визуальный файл interdev6.0 и сгенерируйте файл asp. использовать его Interdev, поскольку он имеет функцию подсказки кода, совместим со средой IDE VB и удобен для написания?
программный код
<%@ Language=VBScript %>
<HTML>
<ТЕЛО>
<%
set obj=server.CreateObject("fCom.fC2")
тусклый с
'Здесь называется свойство Let компонента
obj.myName="Торнадо"
объект.Возраст =20
c=obj.peopleInfo()
Ответ.Написать c
'Здесь называется свойство Get компонента
Ответ. Напишите "<br>"
Response.Write obj.myName
Ответ. Напишите "<br>"
Response.Write obj.Age
%>
</ТЕЛО>
</HTML>
Настройте виртуальный каталог и запустите этот файл asp в IE. Результаты следующие:
Имя: Tornado Возраст: 20.
торнадо
20
Продолжение следует.
Введение и мастер-класс по компоненту Asp. 4.
Проблемы с массивами
Массивы часто используются в программах, и они чаще всего вызывают проблемы.
Давайте рассмотрим это на небольшом примере
. Откройте vb6 и создайте новый. Проект Activex Dll. Измените имя проекта на fCom и имя класса на fC4.
Нажмите Меню->Инструменты->Добавить процесс.
Вводим AcceptArray1 в качестве типа, выбираем public в качестве диапазона, а затем
еще раз подтверждаем операцию: введите. AcceptArray2 в имени и выберите функцию в качестве типа, выберите public в качестве области, а затем подтвердите.
программный код
'Функция: передать адрес массива компоненту, использовать ключевое слово ByRef, назначить и вернуть
Public Sub AcceptArray1 (ByRef varray As Variant) As Variant
varray(0) = "Торнадо"
варрей(1) = "20"
End Sub
'Функция: возврат массива строк
Открытая функция AcceptArray2() как вариант
Dim a(2) как вариант
а(0) = "Торнадо"
а(1) = "20"
AcceptArray2=а
Завершение функции
Хорошо, компонент записан. Нажмите меню->Файл->Создать файл fCom.dll
для подтверждения. В каталоге появится файл fCom.dll.
Проверьте
, откройте визуальный код interdev6.0 и сгенерируйте
программный код asp-файла.
<%@ Language=VBScript %>
<HTML>
<ТЕЛО>
<%
тусклый объект
set obj = server.createobject("fCom.fC4")
тусклый а(2)
'Проверяем метод первого компонента
obj.AcceptArray1(а)
ответ.напишите a(0)
ответ.напишите "<br>"
ответ.напишите a(1)
ответ.напишите "<br>"
'Проверяем метод второго компонента
тусклый б
б=obj.AcceptArray2()
для i=0 до ubound(b)
Ответ. Напишите b(i)
ответ.напишите "<br>"
следующий
%>
</ТЕЛО>
</HTML>
Настройте виртуальный каталог и запустите этот asp-файл в IE. Результаты следующие:
Tornado.
20
торнадо
20
Подводя итог:
строки и числа передаются по значению или возвращаются как возвращаемое значение.
При передаче по ссылке установите тип параметра Variant. Это позволит избежать некоторых ошибок. Однако постарайтесь максимально сократить параметры, передаваемые по ссылке.
Продолжение следует.
Знакомство с компонентом Asp начального уровня и серия мастер-классов 5.
Часто при подключении к базе данных и открытии набора записей мы можем видеть следующее:
программный код
rs.Open strsql, conn,adOpenDynamic,adLockPessimistic
При вводе «,» для выбора появится список типов курсоров или типов блокировки.
Иногда для упрощения мы напрямую rs.open strsql,conn,1,3.
Первый метод более профессиональный. Давайте посмотрим, как
открыть vb6 в asp и создать новый проект Activex Dll. Имя проекта изменяется на fCom, а имя класса — на fC5.
программный код
Опция явная
'Определяем тип перечисления
Публичный интерфейс перечисления
icfirst = 1
icсекунда = 2
icтри = 3
icfour = 4
icfive=5
иксикс=6
icserven=7
ледовая высота = 8
End Enum
'Определить функцию
Открытая функция CallDat (ByVal idig As Integer, ByValics As Interfacedig) как вариант
CallDat=idig*ics
Завершение функции
Хорошо, компонент записан. Нажмите меню->Файл->Создать файл fCom.dll
для подтверждения. В каталоге появится файл fCom.dll.
Проверьте
, откройте визуальный код interdev6.0 и сгенерируйте
программный код asp-файла.
<%@ Language=VBScript %>
<HTML>
<ТЕЛО>
<%
'Определение, вы также можете поместить эту часть в файл, как и набор записей ado <!--#include file="adovbs.inc"-->
константа icfirst = 1
константа icсекунда = 2
const icthree = 3
константа icfour = 4
константа icfive = 5
константа icsix = 6
константный icserven = 7
константная ледяная высота = 8
set obj=server.CreateObject("fCom.fc5")
'здесь можно использовать Iceight или 8, но первое делает код более читабельным
а = obj.CallDat(4,iceight)
Ответ.Напишите
Ответ. Напишите "<br>"
а = объект.CallDat(4,8)
Ответ.Напишите
%>
<П> </П>
</ТЕЛО>
</HTML>
Настройте виртуальный каталог и запустите этот файл asp в IE. Результаты следующие:
32.
32
Базовое введение в компонент Asp и серия мастер-классов 6
Обработка ошибок
Если на странице есть ошибка, но обработка ошибок отсутствует, то на странице будет отображаться ошибка, которую пользователь может не понять.
Может использоваться в asp-скрипте
программный код
При ошибке Возобновить Далее
…
если Номер ошибки<>0, то
Ответ.Запись ошибки.Описание
Конец, если
Но что, если в компоненте что-то пойдет не так? Этот метод может ловить ошибки, но как узнать конкретную ошибку?
Мы можем добавить в компонент обработку ошибок, чтобы возвращать ошибки, чтобы мы могли легко просматривать более подробную информацию об ошибках и помогать нам устранять ошибки.
Используйте Err.Raise, Raise используется для генерации ошибок во время выполнения.
Откройте vb6 и создайте новый проект Activex Dll. Имя проекта изменено на fCom, а имя класса — на fC6.
программный код
Опция явная
Публичная подписка showerror1()
При ошибке Перейти к ErrorHandle
Дим и как двойной
я = 1/0
Обработчик ошибки:
Err.Raise Err.Number, Err.Source, Err.Description
End Sub
'Сгенерировать пользовательские ошибки
Публичная подписка showerror2()
Err.Raise 600, «Самоопределяемая ошибка 600», «Это ошибка, описывающая вашу собственную программу»
End Sub
Хорошо, компонент записан. Нажмите меню->Файл->Создать файл fCom.dll
для подтверждения. В каталоге будет файл fCom.dll.
Проверьте
, откройте визуальный код interdev6.0 и сгенерируйте
программный код asp-файла.
<%@ Language=VBScript %>
<HTML>
<ТЕЛО>
<%
«Следующее предложение очень важно
при ошибке продолжить дальше
set obj=server.CreateObject("fCom.fc6")
obj.showerror1()
«Если обработка ошибок отсутствует, будет сгенерирован интерфейс ошибок, что очень непрофессионально.
«Диапазон 0–512 зарезервирован для системных ошибок; диапазон 513–65535 может использоваться для ошибок, определяемых пользователем.
'Если это сохраняемая ошибка, то номер ошибки в компоненте соответствует номеру ошибки обработки страницы.
если номер ошибки <>0, то
Ответ. Напишите «Сообщение об ошибке», номер ошибки и описание ошибки.
конец, если
Ответ. Напишите "<br>"
'Если это пользовательская ошибка, ее можно обработать отдельно на странице
obj.showerror2()
если номер ошибки<>0, то
если номер ошибки =600, то
Ответ.Запишите номер ошибки и источник ошибки и описание ошибки.
конец, если
конец, если
%>
</ТЕЛО>
</HTML>
Настройте виртуальный каталог и запустите этот файл asp в IE. Результаты следующие:
Сообщение об ошибке 11 делится на ноль.
600 Самоопределяемая ошибка 600 Это ошибка, описывающая вашу собственную программу.
Серия «Введение и освоение компонента Asp для начинающих», часть 7.
При выполнении примеров из предыдущих глав вы можете столкнуться с некоторыми проблемами в той или иной степени
, например: после того, как компонент установлен. скомпилирован, его необходимо изменить, возникают такие ошибки, как «Отказано в доступе, 'f:csdnfcom.dll'» и т. д.
При просмотре страницы ASP откройте диспетчер задач, и вы увидите процесс dllhost.exe с именем пользователя IWAM_YANG. IWAM_YANG будет различаться в зависимости от имени компьютера.
Для решения 1 можно использовать следующие методы
. Перезапустите iis.
Найдите Инструменты управления->Информационные службы Интернета->щелкните правой кнопкой мыши локальный компьютер на втором уровне дерева слева на панели управления->все задачи->перезапустите IIS. Эта операция занимает некоторое время.
В это время вы можете видеть, что процесс dllhost.exe закрыт
2. Недостаток вышеуказанного метода заключается в том, что все веб-сайты в настоящее время закрываются до перезапуска.
Есть ли какое-либо решение для одного веб-сайта или виртуального каталога? Найдите
инструменты администрирования -> Информационные службы Интернета -> Найдите виртуальный каталог, в котором работает ваш компонент, в панели управления. -> Щелкните правой кнопкой мыши «Свойства» -> В первом виртуальном каталоге -> «Защита приложений» -> нажмите «Удалить».
В это время вы можете видеть, что процесс dllhost.exe закрыт
3. Если это кажется вам проблематичным, просто завершите процесс непосредственно в диспетчере задач Windows
4. Последний способ
— найти инструменты управления на панели управления -> Службы компонентов -> щелкнуть «Компьютер», «Мой компьютер», «Выполняемые процессы» -> «Приложения вне процесса IIS» (2860) -> щелкнуть правой кнопкой мыши, чтобы закрыть его.
в это время вы можете видеть, что процесс dllhost.exe закрыт.