#work~
`
a = ['Openstack','Puppet','Python']
b = {}
c = 0
for v in a:
b[v] = c
c+=1
print b
`
Если я вспомню правильно, то необходимо будет перенестись SAFEARRAY
в a VARIANT
для него, чтобы пройти, и затем использовать VBArray возражают для распаковки его на стороне JS вещей:
HRESULT GetArrayOfStrings(/*[out, retval]*/ VARIANT* pvarBstrStringArray)
{
// ...
_variant_t ret;
ret.vt = VT_ARRAY|VT_VARIANT;
ret.parray = rgBstrStringArray;
*pvarBstrStringArray = ret.Detach();
return S_OK;
}
затем
var jsFriendlyStrings = new VBArray( axOb.GetArrayOfStrings() ).toArray();
Shog9 корректен. Сценарии COM требуют, чтобы всеми выводами были ВАРИАНТЫ.
На самом деле это также требует, чтобы всеми ИСХОДНЫМИ ДАННЫМИ были ВАРИАНТЫ также - посмотрите противные детали IDispatch в Вашем любимом справочном файле. Это только думало волшебство о Двойной Интерфейсной реализации ATL и подобными слоями (который, скорее всего, является тем, что Вы используете), что Вы не должны волноваться об этом. Входные ВАРИАНТЫ, переданные кодом вызова, преобразовываются для соответствия сигнатуре метода, прежде чем фактический метод назовут.