0

我正在调用一个 COM 对象方法,该方法在我的 PHP 代码中返回一个类型为 8209 的数组变体对象。

$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\reservoir.php:110 堆栈跟踪 #0 C:\xampp\htdocs\waterCompany\reservoir.php(110): variant_cast(Object(variant),12)#1{main} 抛出在第 110 行的 C:\xampp\htdocs\waterCompany\reservoir.php 中。

我在这里http://php.net/manual/en/function.variant-set-type.php对 variant_cast 做了更多阅读,但我没有取得太大进展。

我正在使用 PHP 5.5.11。

4

1 回答 1

0

8209 是 0x2011,表示 VT_UI1 元素的数组。

当你想转换它时,你需要创建一个 Variants 数组并将旧类型的每个元素复制到其中。复制内容时,您可以将每个 VT_UI1 元素转换为 VT_VARIANT 类型。

不允许也永远不允许强制转换数组。试着学习 VARIANTs 的基础

于 2017-02-18T08:54:38.980 回答