Не удается получить доступ к членам массива COM в WSH/JScript

Я пытаюсь получить доступ к членам массива, возвращаемого методом COM, из JScript через WSH в Windows 7.

Документация для метода выглядит следующим образом (приведена в качестве примера C#):

public System.Array GetValues();

Таким образом, в соответствии с этим он возвращает .NET System.Array. Это все хорошо и хорошо, но вот мой код:

// report is Scripting.FileSystemObject file handle
// var is a COM object
arr = var.GetValues();
val = ??
report.WriteLine(val);

Вот что я пробовал:

val = arr.Length      // produces empty string
val = arr.GetLength() // "Object doesn't support this property or method"
val = arr.GetValue(0) // "Object doesn't support this property or method"

Так что, видимо, это не объект System.Array, потому что методы не работают. Может быть, это объект массива JScript?

val = arr[0]          // empty string
val = arr.length      // empty string
val = arr.pop()       // "Object doesn't support this property or method"

Значит, это тоже не объект Array? Я предполагаю, что это может быть массив встроенных типов:

val = typeof(arr[0])  // "undefined"
val = typeof(arr)     // "unknown"

В крайнем случае загрузил его в Vbsedit и поставил там точку останова, а Vbsedit показывает массив с 800 значениями! Я просто понятия не имею, как получить к ним доступ.


person jjkparker    schedule 24.10.2012    source источник


Ответы (2)



Как обычно, я нашел ответ вскоре после публикации вопроса. Вот решение для преобразования любого типа массива «arr» в соответствующий массив JScript:

arr = var.GetValues().toArray();
val = arr[0];
report.WriteLine(val);
person jjkparker    schedule 24.10.2012