麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

Asp組件初級入門與精通

2019-11-17 04:14:00
字體:
來源:轉載
供稿:網(wǎng)友

asp組件初級入門與精通系列之一

一直以來,想寫一些組件方面的應用,這段時間終于可以寫一點自己喜歡的東西。

希望大家通過這些教程學習后,可以隨心所欲的寫出自己的組件。

每篇文章可能沒有關聯(lián),只是寫一些組件編寫過程中出現(xiàn)的問題。

歡迎大家批評指正

環(huán)境:winxp+vb6+sp6+visual interdev6.0
      

作為第一篇,我們先來寫一個比較簡單的組件

完成的功能是:輸入兩個數(shù)相加,返回相加的結果

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC1

點擊菜單->工具->添加過程

我們在名稱內(nèi)輸入Add,類型選擇函數(shù),范圍選擇公有,然后確定即可

生成如下代碼,我們繼續(xù)完善


 程序代碼
Option Explicit
Public Function Add(ByVal a As Long, ByVal b As Long) As Long
Add = a + b
End Function


Ok,一個簡單的組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件,為什么要使用interdev,因為它有代碼提示功能,與vb的ide環(huán)境一致,方便書寫


 程序代碼
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
set obj=server.CreateObject("fCom.fC1")
'下面這句注意了,因為函數(shù)有返回值的,不能按下面的方法寫,否則ie中會報錯
'obj.Add(3,4)

'錯誤類型:
'Microsoft VBScript 編譯器錯誤 (0x800A0414)
'調(diào)用子程序時不能使用括號
'/xml/fc1.asp, line 9, column 12
'obj.Add(3,4)
'下面是正確寫法
dim c
c=obj.Add(3,4)
Response.Write c
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執(zhí)行此asp文件,得到結果7

第一篇結束了,祝大家學習愉快。


Asp組件初級入門與精通系列之二

如何注冊組件

1.regsvr32 組件的絕對路徑

如:
 程序代碼
regsvr32 c:/test/fc1.dll


因為組件只要注冊就可以使用了,所以與組件的位置無關。

2.在COM+組件管理器中注冊

什么時候需要這種注冊:組件在使用了COM+的服務后需要注冊后才能正常的執(zhí)行。如果該組件僅僅regsvr32注冊,仍然無法使用

如何使用組件


 程序代碼
set obj=server.createobject(“工程名.類名”)


然后調(diào)用其方法屬性

如何卸載組件

1.regsvr32 組件的絕對路徑

如:
 程序代碼
regsvr32 c:/test/fc1.dll  /u


u參數(shù)反注冊組件

2.COM+組件管理器中刪除組件即可

Asp組件初級入門與精通系列之三

如何使用屬性

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC2

點擊菜單->工具->添加過程

我們在名稱內(nèi)輸入myName,類型選擇屬性,范圍選擇公有,然后確定

再次操作:在名稱內(nèi)輸入Age,類型選擇屬性,范圍選擇公有,然后確定

再次操作:在名稱內(nèi)輸入peopleInfo,類型選擇函數(shù),范圍選擇公有,然后確定即可

代碼如下:


 程序代碼
Option Explicit
'保持屬性值的局部變量,只能在類中使用
PRivate mvarmyName As String
Private mvarAge As Integer
'Let寫屬性(Let屬性: 該過程給一個屬性賦值。)
Public Property Let Age(ByVal vData As Integer)
    mvarAge = vData
End Property
'Get讀屬性(該過程獲取一個屬性的值。)
Public Property Get Age() As Integer
    Age = mvarAge
End Property

Public Property Let myName(ByVal vData As String)
    mvarmyName = vData
End Property

Public Property Get myName() As String
    myName = mvarmyName
End Property

Public Function peopleInfo() As String
peopleInfo = "姓名: " & mvarmyName & "  年齡:" & mvarAge
End Function


Ok,一個簡單的組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件,為什么要使用interdev,因為它有代碼提示功能,與vb的ide環(huán)境一致,方便書寫


 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
set obj=server.CreateObject("fCom.fC2")
dim c
'這里調(diào)用的是組件的Let屬性
obj.myName ="龍卷風"
obj.Age =20
c=obj.peopleInfo()
Response.Write c
'這里調(diào)用的是組件的Get屬性
Response.Write "<br>"
Response.Write obj.myName
Response.Write "<br>"
Response.Write obj.Age
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執(zhí)行此asp文件,得到結果如下:

姓名: 龍卷風 年齡:20
龍卷風
20

未完待續(xù)

Asp組件初級入門與精通系列之四

數(shù)組問題

數(shù)組在程序中使用的很多,而且比較容易出問題

我們通過小例子來看看

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC4

點擊菜單->工具->添加過程

我們在名稱內(nèi)輸入AcceptArray1,類型選擇子程序,范圍選擇公有,然后確定

再次操作:在名稱內(nèi)輸入AcceptArray2,類型選擇函數(shù),范圍選擇公有,然后確定即可


 程序代碼
'功能:傳遞數(shù)組地址到組件,使用ByRef關鍵字,并賦值返回
Public Sub AcceptArray1(ByRef varray As Variant) As Variant
    varray(0) = "龍卷風"
    varray(1) = "20"
End Sub

'功能:返回一個字符串數(shù)組
Public Function AcceptArray2() As Variant
       Dim a(2) as Variant
    a(0) = "龍卷風"
a(1) = "20"
AcceptArray2=a
End Function

Ok,一個組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
dim obj
set obj = server.createobject("fCom.fC4")
dim a(2)
'測試第一個組件方法
obj.AcceptArray1(a)
response.write a(0)
response.write "<br>"
response.write a(1)
response.write "<br>"
'測試第二個組件方法
dim b
b=obj.AcceptArray2()
for i=0 to ubound(b)
Response.Write b(i)
response.write "<br>"
next
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執(zhí)行此asp文件,得到結果如下:

龍卷風
20
龍卷風
20

總結一下:

字符串,數(shù)字通過值傳遞或者作為返回值被返回

如果使用引用傳遞,將參數(shù)的類型設為Variant。這樣做可以避免一些錯誤。不過盡可能的減少引用傳遞參數(shù)

未完待續(xù)

Asp組件初級入門與精通系列之五

經(jīng)常我們可以看到在連接數(shù)據(jù)庫,打開記錄集的時候,如下:


 程序代碼
rs.Open strsql, conn,adOpenDynamic ,adLockPessimistic


在鍵入”,”的時候,后面會出現(xiàn)一個游標類型或者鎖類型列表可以供選擇。

有時候我們?yōu)榱撕喕苯觬s.open strsql,conn,1,3

第一種方法是不是更加專業(yè)一些,我們來看看asp中如何實現(xiàn)

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC5


 程序代碼
Option Explicit
'定義枚舉類型
Public Enum Interfacedig
   icfirst = 1
   icsecond = 2
   icthree = 3
   icfour = 4
   icfive = 5
   icsix = 6
   icserven = 7
   iceight = 8
End Enum

'定義函數(shù)
Public Function CallDat(ByVal idig As Integer, ByVal ics As Interfacedig) As Variant
CallDat = idig * ics
End Function

Ok,一個組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
'定義,還可以把這一部分放到一個文件中,就像ado的記錄集<!--#include file="adovbs.inc"-->
   const icfirst = 1
   const icsecond = 2
   const icthree = 3
   const icfour = 4
   const icfive = 5
   const icsix = 6
   const icserven = 7
   const iceight = 8
set obj=server.CreateObject("fCom.fc5")
'這里可以使用iceight或者8,但是前者使代碼具有更好的可讀性
a= obj.CallDat(4,iceight) 
Response.Write a
Response.Write "<br>"
a= obj.CallDat(4,8) 
Response.Write a
%>
<P> </P>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執(zhí)行此asp文件,得到結果如下:

32
32

Asp組件初級入門與精通系列之六

錯誤處理

如果頁面出錯,而沒有對錯誤的處理,那么頁面會顯示一個用戶可能看不懂的錯誤。

在asp腳本中可以使用


 程序代碼
On Error Resume Next
……
if Err.Number<>0 then
Response.Write Err.Description
End if


但是如果組件中出錯呢?這種方法可以捕獲錯誤,但是具體的錯誤如何知道呢?

我們可以在組件中加入錯誤處理,來返回錯誤,這樣可以容易的看到更加詳細的出錯信息,有助于我們排除錯誤。

使用Err.Raise, Raise 被用來生成運行時錯誤

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC6


 程序代碼
Option Explicit
Public Sub showerror1()
On Error GoTo ErrorHandle
Dim i As Double
i = 1 / 0
ErrorHandle:
Err.Raise Err.Number, Err.Source, Err.Description
End Sub

'生成自定義的錯誤
Public Sub showerror2()
    Err.Raise 600, "自己定義的錯誤600", "這是描述自己程序的錯誤"
End Sub

Ok,一個組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
'下面這一句很重要
on error resume next
set obj=server.CreateObject("fCom.fc6")
obj.showerror1()
'如果沒有錯誤處理,就會產(chǎn)生一個出錯的界面,很不專業(yè)
'從 0–512 的范圍保留為系統(tǒng)錯誤;從 513–65535 的范圍可以用做用戶定義的錯誤。
'如果是保留錯誤,那么組件內(nèi)錯誤號和頁面處理的錯誤號是相一致的
if err.number <>0 then
Response.Write "錯誤信息" & err.number & err.Description
end if
Response.Write "<br>"
'如果是用戶定義的錯誤,那么在頁面中可以分別進行處理
obj.showerror2()
if err.number<>0 then
       if err.number =600 then
              Response.Write err.number & err.Source  & err.Description
       end if
end if
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執(zhí)行此asp文件,得到結果如下:

錯誤信息11除數(shù)為零
600自己定義的錯誤600這是描述自己程序的錯誤

Asp組件初級入門與精通系列之七

在運行前幾章的例子,可能或多或少的都會碰上一些問題

如:組件編譯后,又要修改,發(fā)生”權限被拒絕,’f:/csdn/fcom.dll’”等等的錯誤。

當asp頁面瀏覽時,打開任務管理器,會看到一個dllhost.exe,用戶名為IWAM_YANG的進程。IWAM_YANG會根據(jù)計算機名而有所不同。

可以使用以下幾種方式來解決

1.  重新啟動iis.

在控制面板中找到管理工具->internet信息服務->右鍵點擊左邊樹圖第二層本地計算機->所有任務->重新啟動IIS即可,這個操作需要一點時間。

此時你可以看到這個dllhost.exe的進程已經(jīng)關閉

2.  上面這種方法的缺點就是當前所有的網(wǎng)站都被關閉直到重新啟動

有沒有針對單個網(wǎng)站或者虛擬目錄的?有

在控制面板中找到管理工具->internet信息服務->找到你的組件運行的虛擬目錄。->右鍵屬性->第一項虛擬目錄中->應用程序保護->點擊卸載即可。

此時你可以看到這個dllhost.exe的進程已經(jīng)關閉

3.  如果你覺得麻煩,直接在Windows任務管理器中結束該進程既可

4.  最后一種方法

在控制面板中找到管理工具->組件服務->在樹圖中點擊計算機,我的電腦,正在運行的進程->IIS Out-Of-Process Pooled applications(2860)->右鍵關閉即可

此時你可以看到這個dllhost.exe的進程已經(jīng)關閉。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人免费自拍视频 | 日韩视频www | 日日草夜夜草 | 国产一区二区三区视频在线观看 | 亚洲精品自在在线观看 | 狼人狠狠干 | 免费在线观看成年人视频 | 日韩一级免费毛片 | 羞羞草视频 | 免费观看一区二区三区 | 黄色大片大毛片 | 国产精品伦视频看免费三 | 国产精品高潮视频 | 欧美a黄 | av在线大全| 99re色| 国产精品免费一区二区三区四区 | 久久免费视频5 | 午夜a狂野欧美一区二区 | 欧美www| 九九午夜 | 一级成人欧美一区在线观看 | 91av久久| 国产成人精品一区二区视频免费 | 久久国产精品电影 | 国产精品久久久久久久久久东京 | h视频免费看 | 黄色免费av网站 | 91成人影院 | 欧美日韩成人一区二区 | 5a级毛片 | 新久草在线视频 | 鲁丝一区二区二区四区 | www.com香蕉 | 久久99国产伦子精品免费 | 欧美激情精品久久久久久黑人 | 午夜精品区 | 久久精品电影网 | 国产噜噜噜噜久久久久久久久 | av成人免费 | 在线影院av |