快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

存储数据键和项目对的类(DICTIONARY对象)

<%
Class Dictionary

Public Copyright, Developer, Name, Version, Web

Private aryKey()
Private aryItem()
Private iCompareMode

Private Sub Class_Initialize()
\\\'请保留此信息
Copyright = "2005 www.etoow.com, All rights reserved."
Developer = "ChinaOK"
Name = "Dictionary"
Version = "1.0b"
Web = "http://www.etoow.com"
Redim aryKey(0)
Redim aryItem(0)
aryKey(0)=""
aryItem(0)=""
iCompareMode=0
End Sub

Public Function Add(sKey,Item)
InsertSort sKey,Item
End Function

Public Function Exists(sKey)
If BinSearch(sKey)=0 Then
Exists=false
Else
Exists=True
End if
End Function

Public Function Items()
Items=aryItem
End Function

Public Function Keys()
Keys=aryKey
End Function

Public Function Remove(sKey)
DeleteSort sKey
End Function

Public Function RemoveAll()
Redim aryKey(0)
Redim aryItem(0)
aryKey(0)=""
aryItem(0)=""
End Function

Property Get Count()
Dim Len1,Len2
Len1=ubound(aryKey)
Len2=ubound(aryItem)
If Len1<>Len2 Then Redim Preserve aryItem(Len1)
Count=Len1
End Property

Property Get Item(sKey)
Dim iTop
iTop=0
iTop = BinSearch(sKey)
If iTop<>0 Then
Item=aryItem(iTop)
Else
Add sKey,""
Item=""
End If
End Property

Property Let Item(sKey,NewItem)
Dim iTop
iTop=0
iTop = BinSearch(sKey)
If iTop<>0 Then
aryItem(iTop)=NewItem
Else
Add sKey,NewItem
End If
End Property

Property Let Key(sKey,sNewKey)
Dim iTop
iTop = 0
iTop = BinSearch(sKey)
If iTop<>0 Then
aryKey(iTop)=sNewKey
Else
Err.Raise 19782,"myDictionary","未找到元素" & sKey,"",0
End If
End Property

Property Let CompareMode(iMode)
If Count()>0 Then Err.Raise 19783,"myDictionary","设置字符串要害字比较模式必须在Items为空时设置","",0
If (iMode<>0 And iMode<>1) Then iMode=0
iCompareMode=iMode
End Property

Property Get CompareMode()
CompareMode=iCompareMode
End Property


Private Function BinSearch(sKey)
\\\'折半查找算法
Dim Result
Result=0
Dim iHigh,iLow,iMid
iHigh = Count()
iLow = 1
Do While (iLow<=iHigh)
iMid=(iLow+iHigh)2
If strComp(aryKey(iMid),sKey,iCompareMode)=0 Then
Result=iMid
Exit Do
End If
If strComp(aryKey(iMid),sKey,iCompareMode)=1 Then
iHigh=iMid-1
Else
iLow=iMid+1
End if
Loop
BinSearch=Result
End Function

Private Function DeleteSort(sKey)
Dim iTop,I,iLen
iTop=BinSearch(sKey)
If iTop=0 Then
Err.Raise 19782,"myDictionary","未找到元素" & sKey,"",0
Else
iLen=Count()
For I=iTop+1 To iLen
aryKey(I-1)=aryKey(I)
aryItem(I-1)=aryItem(I)
Next
Redim Preserve aryKey(iLen-1)
Redim Preserve aryItem(iLen-1)
End if
End Function

Private Function InsertSort(sKey,Item)
Dim I,J,iLen
iLen=Count()
\\\'查找插入 ,直接查找插入算法
For I=1 To iLen
If (strComp(aryKey(I),sKey,iCompareMode)<>-1) Then
Exit For
End If
Next
If (I>iLen) Then
\\\'直接插入
Redim Preserve aryKey(I)
Redim Preserve aryItem(I)
aryKey(I)=sKey
aryItem(I)=Item
Else
If (strComp(aryKey(I),sKey,iCompareMode)=0) Then
Err.Raise 19781,"myDictionary","此键已与该集合的一个元素关联","",0
Else
Redim Preserve aryKey(iLen+1)
Redim Preserve aryItem(iLen+1)
For J=iLen+1 To I+1 Step -1
aryKey(J) = aryKey(J-1)
aryItem(J)= aryItem(J-1)
Next
aryKey(I)=sKey
aryItem(I)=Item
End If
End If
End Function

\\\'类销毁
Private Sub Class_Terminate()

End Sub

End Class

%>
返回类别: 教程
上一教程: ASP进阶教程Ⅲ:给留言簿润下色
下一教程: 如何在静态页面中显示文章被阅读的次数

您可以阅读与"存储数据键和项目对的类(DICTIONARY对象)"相关的教程:
· 如何用最简朴的语句提交大量表单对象的值存储到数据库
· ASP 用存储过程实现数据分页
· 将HTML表单数据存储为XML格式
· 将HTML表单数据存储为XML格式(1)
· 浅谈ASP中REQUEST对象获取客户端数据的顺序
    微笑服务 优质保证 索取样品