I want to define an array.
My question is Dim x(999) or Dim x(9999) will cost the same or Dim x(9999) will waste more resource?
Thank you very much!!
I want to define an array.
My question is Dim x(999) or Dim x(9999) will cost the same or Dim x(9999) will waste more resource?
Thank you very much!!
Naturally creating an array with 9999 elements in it will use more memory than an array with only 999. I suspect that this is not really your question though. Maybe you are trying to figure out a way to allocate enough memory for a dynamic amount of data? You can resize arrays in classic ASP (VBScript) using the ReDim statement - you could do this once the true size is known.
Arrays are allocated in contiguous memory. Hence an array of 10000 elements will occupy 10 times the memory of one that needs 1000 elements.
You can start off small and grow your array as the need arises. I've used this sort of class in the past to create variable length list type.
Class List
    Dim maItems
    Dim mlCount
    Public Sub Class_Initialize()
       ReDim myArray(8)
       mlCount = 0
    End Sub
    Public Function Add(Item)
       If mlCount = UBound(maItems) ReDim Preserve maItems(mlCount * 2)
       mlCount = mlCount + 1
       maItems(mlCount) = Item
       Add = mlCount
    End Function
   Public Property Get Item(Index)
       If Index < 1 Or Index > mlCount Then Error.Raise 9, "List", "Subscript out of Range"
       Item = maItems(Index)
   End Property
   Public Property Get Count()
       Count = mlCount
   End Property
End Class
Is it that big of an array?
why don't you assign it to be Dynamically and then expand as it grows?
<%
Dim myDynArray() 
ReDim myDynArray(1)
myDynArray(0) = "Albert Einstein"
myDynArray(1) = "Mother Teresa"
ReDim Preserve myDynArray(3)
myDynArray(2) = "Bill Gates"
myDynArray(3) = "Martin Luther King Jr."
For Each item In myDynArray
    Response.Write(item & "<br />")
Next
%>
output of the code above is
Albert Einstein Mother Teresa Bill Gates Martin Luther King Jr.
Hi all,
I added a little to Anthony W Jones's code, so it returns an Array (ToArray()) with the correct size with only the relevant elements.
Class List    
    Dim maItems    
    Dim mlCount
    Public Sub Class_Initialize()       
        ReDim maItems(8)
        mlCount = 0    
    End Sub    
    Public Function Add(Item)            
        If mlCount = UBound(maItems) Then ReDim Preserve maItems(mlCount * 2)       
        maItems(mlCount) = Item  
        mlCount = mlCount + 1
        Add = mlCount   
    End Function
    Public Property Get ToArray()
        ReDim Result(Params.Count-1)
        Dim i
        For i = 0 to Params.Count-1
            Result(i) = Params.maItems(i)
        Next
        ToArray = Result        
    End Property
    Public Property Get Item(Index)       
        If Index < 1 Or Index > mlCount Then Error.Raise 9, "List", "Subscript out of Range"       
        Item = maItems(Index)   
    End Property   
    Public Property Get Count()       
        Count = mlCount   
    End Property   
End Class