Как преобразовать вариант объекта массива 8209 в VT_VARIANT

Я вызываю метод COM-объекта, который возвращает объект варианта массива типа 8209 в моем коде PHP.

$com_VArray = $com_Object->objectMethod; //Is a 8209 variant object

В конце я хочу передать преобразованный объект VT_VARIANT в качестве значения для другого метода COM-объекта, который требует, чтобы его ввод был VT_VARIANT [12].

Я конвертирую $ com_VArray в тип варианта объекта VT_VARIANT, выдавая следующее

$obj_VT_VARIANT = variant_cast($com_VArray, VT_VARIANT);

Но тогда я получаю следующую ошибку

Неустранимая ошибка: необработанное исключение «com_exception» с сообщением «Преобразование типа варианта не выполнено: несоответствие типов». в C: \ xampp \ htdocs \ waterCompany \servoir.php: 110 Трассировка стека # 0 C: \ xampp \ htdocs \ waterCompany \servoir.php (110): option_cast (объект (вариант), 12) # 1 {основной} брошенный в C: \ xampp \ htdocs \ waterCompany \servoir.php в строке 110.

Я сделал еще немного чтения по варианту здесь http://php.net/manual/en/function.variant-set-type.php но я не добился значительных успехов.

Я использую PHP 5.5.11.

0

Решение

8209 — это 0x2011, который сигнализирует о массиве элементов VT_UI1.

Когда вы хотите преобразовать его, вам нужно создать массив вариантов и скопировать в него каждый элемент старого типа. Когда вы копируете содержимое, вы можете привести каждый элемент VT_UI1 к типу VT_VARIANT.

Не разрешается и никогда не разрешается создавать массивы. Просто попробуйте выучить основы ВАРИАНТОВ

0

Другие решения

Других решений пока нет …