asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。_应用技巧

复制代码 代码如下:

Class Vector

Private vector_datas()
Private initial_capacity '初始化容量
Private capacity_increment '容量增量
Private element_count '元素数
Private max_capacity '总容量

Private Sub Class_Initialize()
RemoveAll
End Sub

Public Function RemoveAll()
element_count = 0
initial_capacity = 10
capacity_increment = 10
max_capacity = initial_capacity
ReDim vector_datas(initial_capacity)
End Function

Public Property Get Count()
Count = element_count
End Property

Public Property Get Capacity()
Capacity = max_capacity
End Property

Public Property Get InitialCapacity()
InitialCapacity = initial_capacity
End Property

Public Property Get CapacityIncrement()
CapacityIncrement = capacity_increment
End Property

Public Default Property Get Item(index)
If IsObject(vector_datas(index)) Then
Set Item = vector_datas(index)
Else
Item = vector_datas(index)
End If
End Property

Public Function Add(element)
Call Insert(element_count, element)
End Function

Public Function Remove(element)
Dim index
index = Search(element)
RemoveAt(index)
Remove = index
End Function

Public Function RemoveAt(index)
Dim i
For i = index + 1 To element_count - 1 Step 1
Call InternalElement(i - 1, vector_datas(i))
Next
element_count = element_count - 1
If max_capacity - capacity_increment > element_count Then
max_capacity = max_capacity - capacity_increment
ReDim Preserve vector_datas(max_capacity)
End If
End Function

Public Function Search(element)
Dim i
For i = 0 To element_count - 1 Step 1
If vector_datas(i) = element Then
Search = i
Exit Function
End If
Next
Search = -1
End Function

Public Function Insert(index, element)
If index > element_count Then
Err.Raise 20903, "Vector", "Array Index Out Of Bounds.", "", 0
End If
If element_count = 0 Then
Call InternalElement(0, element)
ElseIf index = element_count Then
Call InternalElement(element_count, element)
Else
Dim i
For i = element_count To index + 1 Step -1
Call InternalElement(i, vector_datas(i - 1))
Next
Call InternalElement(index, element)
End If
element_count = element_count + 1
If element_count = max_capacity Then
max_capacity = element_count + capacity_increment
ReDim Preserve vector_datas(max_capacity)
End If
End Function

Public Function SetElementAt(index, element)
If index < 0 Or index > element_count - 1 Then
Err.Raise 20903, "Vector", "Array Index Out Of Bounds.", "", 0
End If
Call InternalElement(index, element)
End Function

Private Function InternalElement(index, element)
On Error Resume Next
If IsObject(element) Then
Set vector_datas(index) = element
Else
vector_datas(index) = element
End If
If Err.Number <> 0 Then
MsgBox("Vector InternalElement Error: " & vbCrLf & "Error Source: " & Err.Source & vbCrLf & "Error Number: " & Err.Number & vbCrLf & "Error Description: " & Err.Description & vbCrLf)
Err.Clear '清除错误信息
End If
End Function

Private Sub Class_Terminate() '类销毁
Erase vector_datas '释放数组占用的内存, 將每個元素都設為 Nothing
initial_capacity = Empty
capacity_increment = Empty
element_count = Empty
max_capacity = Empty
End Sub

End Class

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/o1o2o3o4o5/archive/2009/10/20/4703033.aspx

时间: 2025-01-29 14:04:59

asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。_应用技巧的相关文章

asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。

复制代码 代码如下: Class Vector Private vector_datas() Private initial_capacity '初始化容量 Private capacity_increment '容量增量 Private element_count '元素数 Private max_capacity '总容量 Private Sub Class_Initialize() RemoveAll End Sub Public Function RemoveAll() element_

asp.net实现调用存储过程并带返回值的方法_实用技巧

本文实例讲述了asp.net实现调用存储过程并带返回值的方法.分享给大家供大家参考,具体如下: /// <summary> /// DataBase 的摘要说明 /// </summary> public class DataBase { /// <summary> ///DataBase 的摘要说明 /// </summary> protected static SqlConnection BaseSqlConnection = new SqlConnec

asp.net实现生成静态页并添加链接的方法_实用技巧

本文以实例讲解了asp.net实现生成静态页并添加链接的方法,非常实用的功能,通过本实例可以加深读者对于asp.net下文件操作的认识. 1.创建一个静态网页模板 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http

Asp Split函数之使用多个分割符的方法_应用技巧

首先,我在知道Split这个函数的作用,是把一个字符串按指定的分割符分割成一个字符串数组.   ASP里有这个Split,是这样定义的dim Split(byval source as string ,byval str as string) as string()   source是源字符串,str是分隔符   我这里用了VB.net的写法,方便说明返回值的类型和参数的类型.   大家一看就明白怎么用了.   在C#里,我们是这样用的   string[] Split(string sourc

asp.net+Ligerui实现grid导出Excel和Word的方法_实用技巧

本文实例讲述了asp.net+Ligerui实现grid导出Excel和Word的方法.分享给大家供大家参考,具体如下: 下面采用的导EXCEL方法,适合不翻页的grid,而且无需再读一次数据库,对于翻页的grid来说,要导全部,当然后台要再读一次数据库,这种导EXCEL方法baidu一大堆,这里不重复 代码部分: grid.htm: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http

获取asp.net服务器控件的客户端ID和Name的实现方法_实用技巧

前几天在做项目的时候,遇到一个问题,想查看Asp.net中服务器控件在客户端显示的name属性.起初,感觉不是很难找,但就是找不到,几经周折,终于发现了: string btnClientName = btnSearch.UniqueID;//服务器控件在客户端显示的name属性 string btnClientID = btnSearch.ClientID;//服务器控件在客户端显示的id属性 以上这篇获取asp.net服务器控件的客户端ID和Name的实现方法就是小编分享给大家的全部内容了,

ASP.NET中弹出消息框的几种常见方法_实用技巧

本文实例讲述了ASP.NET中弹出消息框的几种常见方法.分享给大家供大家参考.具体分析如下: 在ASP.NET网站开发中,经常需要使用到alert消息框,尤其是在提交网页的时候,往往需要在服务器端对数据进行检验,并给出提示或警告. 这里,仅介绍几种不同的实现方法. 1.众所周知的方法是采用如下代码来实现: 复制代码 代码如下: Response.Write("<script>alert('弹出的消息')</script>"); 不可否认,这种方法是最常用,也是最

asp.net利用后台实现直接生成html分页的方法_实用技巧

本文实例讲述了asp.net利用后台实现直接生成html分页的方法,是一个比较实用的功能.分享给大家供大家参考之用.具体方法如下: 1.建立存储过程: ALTER procedure [dbo].[p_news_query] @Page int as begin select top 5 new_id,new_title,new_url,new_content_text,create_time,user_name from (select *,ROW_NUMBER() over(order by

ASP.NET中GridView 重复表格列合并的实现方法_实用技巧

这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下GridView 和 Repeater 关于重复数据合并的方法. 效果图如下: GridView : 前台代码 : <div> <asp:GridView ID="gvIncome" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateFie