2010-08-10 3 views
3

La plupart des scripts que j'écris sur mon travail dépendent de la création de tableaux de taille dynamique. Les tableaux dans VBScript rendent cette tâche très ardue, car il faut des tableaux chaque fois que l'on veut les redimensionner. Pour contourner ce problème, j'ai commencé à créer des chaînes délimitées par des virgules et à utiliser Split(...) pour créer des tableaux 1D. Bien que cela fonctionne fantastique pour moi, je me suis demandé si VBScript a un moyen plus efficace de gérer cela. Donc, je demande à StackOverflow; sont là?Tableaux dynamiques dans VBScript avec Split(). Y a-t-il un meilleur moyen?

Responsabilité: Je suis pleinement conscient que VBScript est un langage de script assez de qualité inférieure, mais Python nécessite un logiciel supplémentaire, ce qui est un peu embêtant pour l'automatisation du serveur, et PowerShell n'est pas une composante essentielle encore. Je les apprends tous les deux, cependant!

+0

Avez-vous regardé des requêtes Jet et/ou d'enregistrement déconnectés ? Jet est installé avec Windows. – Fionnuala

+0

@Remou: Oui, j'ai. Beaucoup plus de code pour pas beaucoup plus de fonctionnalités dans la plupart des cas. Je les utiliserais si j'avais besoin de trier ou de tableaux 2D (c'est-à-dire des lignes/colonnes). –

Répondre

5

La solution que j'utilise habituellement consiste à redimensionner la matrice chaque fois que j'y ajoute un nouvel élément. De cette façon, le tableau de fin n'aura jamais d'entrées inutilisées.

ReDim aArray(-1) 

For i = 1 To 10 
    ReDim Preserve aArray(UBound(aArray) + 1) 
    aArray(UBound(aArray)) = i 
Next 

MsgBox Join(aArray, "," & vbNewLine) 

Autre solution proposée par Carlos est de le faire en utilisant objet Dictionary qui est une solution probablement plus propre:

Set dic = CreateObject("Scripting.Dictionary") 

dic.Add "Item1", "" 
dic.Add "Item2", "" 
dic.Add "Item3", "" 

msgbox Join(dic.Keys, "," & vbNewLine) 

Merci, Maciej

1

Que diriez-vous d'un objet Dictionary?

+0

J'allais suggérer cela. Cela semble être la réponse à beaucoup de problèmes. – Tester101

+0

J'utilise des dictionnaires quand je veux des paires k/v. Le problème dont je parlais était pour les cas où j'ai besoin de tableaux 1D. –

+0

Vous pouvez certainement l'utiliser comme un tableau 1D. – aphoria

Questions connexes