Introduction
Classic ASP has always lacked native support for dynamic arrays and collections. This is a simple utility class that adds this functionality. It is fairly straightforward and easy to use, and provides much of the common functionality that the more advanced languages provide.
Background
I have been writing classic ASP code for several years now, and I never was able find a collection or dynamic array class for classic ASP that provided all of the functionality of a collection in the more advanced languages. I wrote this utility class several years ago, and recently decided to publish it, seeing that there still doesn't appear to be a collection or dynamic array class out there (that I have seen) that supports all of the features this one does.
It is not limited to any type of objects for its elements, and can even have another collection as its item (so you can have a "collection of collections" if you so choose).
Using the code
The code is fairly simple and straightforward to use, as it is more or less your basic collection with a couple of advanced features.
The properties available are:
Object Item
int Count
Array DataArray
The methods available are:
int Add(Object value)
void AddItems(Array items)
void Insert(int index, Object value)
void Remove(Object value)
void RemoveAt(int index)
int IndexOf(Object value)
bool Contains(Object value)
void Clear()
string JoinData(string delimiter)
string ToString()
void CopyTo(Collection dest)
Collection Clone()
Shown below is a simple example of how to use the class:
dim v_col: set v_col = new Collection
v_col.Add("item 1")
v_col.Add("item 2")
v_col.Add("item 3")
v_col.AddItems(Array("item 4", "item 5"))
call v_col.Insert(2, "inserted item 3")
response.write "Count: " & v_col.Count & vbCrLf
response.write "2nd Item: " & v_col(1) & vbCrLf
v_col(1) = "item 2 edit"
response.write "Whole Collection:" & vbCrLf & v_col.ToString() & vbCrLf
response.write "Joined: " & v_col.JoinData(",")
Points of interest
The ToString()
and JoinData()
methods will look for a ToString()
method on the items of the collection, and if they find the method, will use that to convert the item into a string. If they do not find one, they will attempt to convert the item to a string, and failing that will simply say that the item is an Object
, and will show the type name of the item (e.g., "[Object: MyObject]
").
I did at one time try to write a generic sorting method for this class, but never did get it to work properly with any generic object, and didn't have the time to spend getting it to work. If I ever find that I need this feature in the future, I may add it.
Revision History
- 10 Dec 2008 - Origional version.
- 24 Dec 2012 - Updated the download file to include the first revision suggested by ptmcomp.