Click here to Skip to main content
Click here to Skip to main content

A collection class for classic ASP

By , 24 Jan 2012
 

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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Flamewave4
Web Developer Onsharp
United States United States
Member
I have been developing websites since 1999, and occasionally will venture into application development. I am proficient in most of the web-based languages and love what I do. I work for a small web development firm based out of Fargo, ND and plan to stay in the web development business for a long time. When I'm not programming I enjoy hiking, biking, woodworking, yard work, and the occasional computer/console game.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 5membermanoj kumar choubey3 Apr '12 - 0:36 
Suggestion.NET ArrayList can be used in Classic ASPmemberVerious31 Jan '12 - 12:26 
GeneralRe: .NET ArrayList can be used in Classic ASPmemberFlamewave431 Jan '12 - 14:07 
GeneralMy vote of 5member$2006 Feb '11 - 17:25 
GeneralRe: My vote of 5protectorAspDotNetDev24 Jan '12 - 7:04 
GeneralFREE Classic ASP Frameworkmemberjosaz24 Apr '09 - 5:49 
GeneralA question in asp please helpmemberaishar21 Dec '08 - 23:12 
GeneralRe: A question in asp please helpmemberFlamewave422 Dec '08 - 4:24 
GeneralPossible improvementmemberptmcomp16 Dec '08 - 10:37 
GeneralRe: Possible improvementmemberFlamewave416 Dec '08 - 11:28 
GeneralRe: Possible improvementmemberdmeagor24 Jan '12 - 0:51 
GeneralRe: Possible improvementmemberFlamewave424 Jan '12 - 5:07 
GeneralQuestionmemberVerious16 Dec '08 - 3:18 
What are the advantages of this Collection class implementation versus the native Dictionary object (which has support for generic objects)?
GeneralRe: QuestionmemberFlamewave416 Dec '08 - 11:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130516.1 | Last Updated 24 Jan 2012
Article Copyright 2008 by Flamewave4
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid