Incompatibilité de Type au moment de retourner un tableau

Je suis en train d'écrire une fonction VBScript, qui prend comme dans un tableau de chaînes de caractères et retourne un tableau contenant les mêmes chaînes triées par ordre alphabétique. Idéalement, je voudrais que cette fonction fonctionne exactement comme (par exemple) la fonction uCase, où vous pouvez dire:

myString = ucase(mystring)

Où la valeur de "machaine" seront remplacés par la version en majuscules de son contenu.

Mais quand j'ai mis en place un tableau dans mon script de test, puis le donner à ma fonction de tri, j'obtiens une erreur d'incompatibilité de type affectation du résultat à la variable d'origine. Tout ce que je peux comprendre, c'est que VBScript ne doit pas vous permettent de remplacer un tableau à un autre tableau, parce que la fonction TypeName me dit que les deux la variable d'entrée, je suis en utilisant la sortie de la fonction de tri sont du même type ("Variante()").

Voici mon code d'exemple à vous donner quelque chose de plus concret à travailler avec:

Option Explicit
Dim testArray(), thisItem, sortedArray 
ReDim testArray(9)

testArray(0)="Xylophone"
testArray(1)="Elephant"
testArray(2)="Ferret"
testArray(3)="Eel"
testArray(4)="Dinosaur"
testArray(5)="Barracuda"
testArray(6)="Ape"
testArray(7)="Weasel"
testArray(8)="Firebird"
testArray(9)="Phoenix"

WScript.Echo "Starting Array:"
For Each thisItem In testArray
  WScript.Echo "  " & thisItem
Next

' This line will work fine, assigning Variant() to Empty sortedArray
sortedArray = SortArray(testArray)
' This line will generate a type mismatch, assigning Variant() to Variant()
testArray = SortArray(testArray)

WScript.Echo "Sorted Array:"
For Each thisItem In sortedArray
   WScript.Echo "  " & thisItem
Next

WScript.Quit 0

Function SortArray(ByVal inArray)

   Dim a, b, swapVal 

   For a = UBound(inArray) - 1 To 0 Step -1
      For b = 0 To a
         If inArray(b) > inArray(b+1) Then
            swapVal = inArray(b+1)
            inArray(b+1) = inArray(b)
            inArray(b) = swapVal
         End If
      Next
   Next

   SortArray = inArray

End Function 

Si vous exécutez cet exemple de code, vous verrez que la ligne commençant par "sortedArray=" fonctionnent très bien. La ligne ci-dessous, en commençant par "testArray=" génère une erreur d'incompatibilité de type.

Idéalement, j'aimerais que cette fonction telle qu'une ou DEUX de ces lignes serait de travailler correctement. (En d'autres mots, lorsque je l'utilise, plus tard, je ne veux pas avoir à penser "Oh, oui, j'ai créer une autre variable et affecter la sortie à la place de ma variable d'origine.")

Suis-je raté quelque chose ou est VBScript incapable de faire ce que je veux faire ici?

vous devinez mal; testArray commence comme une fracture de tableau fixe de variantes.

OriginalL'auteur msalsbury | 2013-06-06