Je recherche de l'aide pour appuyer sur la valeur d'analyse de la valeur XML basée sur certains filtres / mot correspondants dans un ArrayList code>. Cependant, ce réseau ne doit pas avoir de taille prédéfinie de matrice, car les entrées XML sont dynamiques à partir du fichier au fichier. Signification, XML File1 peut avoir 10 d'autres entrées et XML File2 peut avoir 15 entrées. Quelqu'un peut-il indiquer comment je peux faire en dessous de 2Things: p>
3 Réponses :
Les matrices peuvent être définies comme puis dimensionné et re-dimensionné au temps d'exécution p> ou, pour conserver tout Les données qui se trouvent dans le tableau p> lb et ub sont des limites de la matrice et peuvent être déterminées par code, par exemple p> redim MyArray (0 to 0)
For each line in xml
if Match then
MyArray(ubound(MyArray)) = Match
Redim Preserve MyArray(0 to ubound(MyArray) + 1)
end if
Next
' Array ends up 1 size larger than number of matches '
if ubound(MyArray) > 0 then
redim Preserve MyArray (0 to ubound(MyArray) - 1)
end if
Merci Chris, mais je ne pourrai que connaître l'UB de la matrice à la fin de la boucle de la boucle, mais je dois assigner / pousser la valeur d'entrée dans la matrice à chaque correspondance de XML.
@LeNew, la redimelle lorsque chaque match est trouvé. Je vais éditer une réponse à la démo
aussi stupide que possible, il est parfois utile d'utiliser une chaîne qui peut être considérée comme une gamme dynamique de tri, puis la divisez-la. Cette approche ne fonctionne que si les objets de votre réseau résultant sont des chaînes ou des chiffres et vous pouvez être sûr que le char. Séquence que vous sélectionnez comme un séparateur ne se produira pas à l'intérieur des représentations de chaîne de vos objets, comme par exemple:
Temp = ""
Separator = ","
For A = 1 to 155
If Temp <> "" Then
Temp = Temp & Separator
End If
Temp = Temp & CStr(A)
Next 'A
myArray = Split(Temp, Separator)
'now myArray has the elements 1, 2, ..., 155 (which are strings!)
Bien que l'utilisation de collections ou de dictionnaires puisse être de meilleures options pour ajouter incrémentalement des éléments, il pourrait y avoir des moments où il est plus facile d'incrémenter un tableau.
Voici une fonction qui peut ajouter un élément ou même plusieurs éléments à la fin d'une matrice. Je basé sur la façon dont Javascripts Cette fonction utilise également une fonction d'assistance Push code> fonctionne fonctionne. P> arraydimensionlength code> pour assurer que Un tableau a été passé et qu'il ne s'agit que d'une seule dimension. P> Private Sub testArrayPush()
Dim data() As String
' Single element
ArrayPush data, "apple"
' Multiple elements
ArrayPush data, "banana", "carrot"
Debug.Print Join(data, ", ") '<~ apple, banana, carrot
End Sub
Vous pouvez également avoir une certaine valeur sur la recherche de Stackoverflow.com/q/8560718/641067 . Cette question exécute un
Redim Conserve code> Tous les 1000 enregistrements à l'aide d'un testmod code> comme processusredim code> peut être coûteux de code temporel