Je souhaite définir un tableau.dim Array
Ma question est Dim x (999) ou Dim x (9999) coûteront les mêmes x ou Dim (9999) gaspille plus de ressources?
Merci beaucoup !!
Je souhaite définir un tableau.dim Array
Ma question est Dim x (999) ou Dim x (9999) coûteront les mêmes x ou Dim (9999) gaspille plus de ressources?
Merci beaucoup !!
Naturellement créer un tableau avec 9999 éléments dans celui-ci utilisera plus de mémoire que d'un tableau avec seulement 999. Je soupçonne que ce n'est pas vraiment votre question cependant. Peut-être que vous essayez de trouver un moyen d'allouer suffisamment de mémoire pour une quantité dynamique de données? Vous pouvez redimensionner des tableaux dans ASP (VBScript) classique en utilisant l'instruction ReDim - vous pouvez le faire une fois que la taille réelle est connue.
Les tableaux sont alloués dans la mémoire contiguë. Ainsi, un tableau de 10000 éléments occupera 10 fois la mémoire de celui qui a besoin de 1000 éléments.
Vous pouvez commencer petit et agrandir votre tableau en cas de besoin. J'ai utilisé ce type de classe dans le passé pour créer un type de liste de longueur variable.
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) 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
Est-ce que c'est un gros tableau? Pourquoi ne pas l'assigner pour être dynamiquement et puis développer comme il se développe?
<%
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
%>
sortie du code ci-dessus est
Albert Einstein Mother Teresa Bill Gates Martin Luther King Jr.
Vous devez faire attention à ne pas étendre trop souvent le tableau, la préservation nécessite souvent que le tableau dans son ensemble soit copié en mémoire. – AnthonyWJones
Je suis d'accord, mais était seulement pour l'exemple de l'amour. – balexandre
J'ai ajouté un peu au code de Anthony W Jones, il retourne un tableau (ToArray()) avec la taille correcte avec seulement les éléments pertinents.
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
Je pense que le code ci-dessus devrait plutôt être: Dim Dim maItems mlCount Sous Class_Initialize publique() ReDim maItems (8) mlCount = 0 End Sub – PropellerHead
@PropellerHead: Bien vu. Je passe la majeure partie de mon temps en C# ces jours-ci. ;) – AnthonyWJones