问题标签 [variant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在 XLOPER 和 VARIANT 之间编组?
我正在开发一个与 COM 对象通信的 Excel 插件 (XLL)。所以,我必须在 XLOPER 和 VARIANT 之间进行编组。我已经完成了大部分工作,但数组绝对是一种痛苦。我需要支持一维和二维数组。
我想有人以前已经不得不处理这个问题了。简化处理 VARIANT、SAFEARRAY 和 XLOPER(以及 XLOPER12)的最佳方法是什么?
c++ - boost::variant 转换为类型
我有来自 boost lib 的以下变体:
现在我想从 a 中声明为 ' value
'的变量中获取一个值struct node
,所以我认为我可以使用泛型并这样调用函数:find_attribute<long>(attribute);
,但是编译器说它不能从变量转换为 long 或我给它的任何其他类型. 我究竟做错了什么?
c++ - 升压变体比较器
我需要比较两个类型的变量,boost::variant
并且我想比较变量内的值是否相等。
实现这一点的最佳方法是什么?
我的变体如下所示:
php - 如何从 PHP 中的 COM 对象返回的多维变量数组中读取?
我正在使用一个返回多维 VARIANT 数组 (vt_array) 的 COM 对象,并且我正在尝试从数组中读取值。
当我使用print_r($mdArray)
它时显示variant Object
. (variant_get_type($mdArray)
返回8204
。)
我尝试使用foreach ($mdArray as $oneArray)
,但收到消息:
警告:Loader::getfields() [loader.getfields]:只能处理 C:\Inetpub\wwwroot\root\script\fileloader.php 中第 135 行的一维变量数组(此数组有 2 个)致命错误:未捕获的异常在 C:\Inetpub\wwwroot\root\script\fileloader.php:135 中带有消息“类型变体的对象未创建迭代器”的“异常”堆栈跟踪:#0 C:\Inetpub\wwwroot\root\script\fileloader .php(135): Loader::getfields() #1 C:\Inetpub\wwwroot\root\testloader.php(21): Loader->getfields() #2 {main} 在 C:\Inetpub\wwwroot\第 135 行的 root\script\fileloader.php
(foreach 循环在第 135 行)
我能得到的关于数组的唯一信息是使用count($mdArray)
which returns 8
。
如果这里的任何人有任何阅读多维 VARIANT 数组的经验,请告诉我如何做到这一点。
visual-c++ - 如何从 VC++ 将变量数组传递给 VB Com 组件
我正在从 VC++ 客户端调用 VB COM 组件函数,
此函数需要 VARIANT 数组,
HRESULT setLabels (/[in,out]/VARIANT * 标签)
我尝试通过以下方式传递变量数组,
在这两种方式中,VB 组件都无法按预期工作。由于我没有 VB 组件的来源,我不知道里面发生了什么,当我从 VB 客户端访问时,同一个组件工作正常。
如何将变量数组从 VC++ 传递给 VB 组件?
c++ - boost::variant 和 void* 指针
我需要一个包含任何用户定义类的实例的变体类型。所以我使用 void*:
我用地图创建了一个包装类:
使用示例:
这个 void* 在变体类中有两个问题:
- 使用指向动态分配内存的指针复制属性是危险的并且容易出错。
- 用户可以将 void* 静态转换为 WrongClass*,而不是 MyClass*。它编译,但结果是不可预测的。
可能的解决方案:
- 使用 boost::shared_ptr< void* >。
- 记住所有 void* 值(添加时)的 typeid
std::map<void*, typeid> typeid_map
。当用户请求 void* 值,将其转换为任何 TClass* 时,让我们评估一个断言:assert(typeid_from_typeid_map == typeid(TClass*))
。
问题:
1. 是否有其他解决方案来保存任何用户定义类的值?
2. 可能你会为提到的问题推荐更好的解决方案并指出其他一些问题?
delphi - 使 VarToDoubleAsString 使用 Delphi 设置(不是操作系统设置)
当将包含字符串值的 Variant 分配给浮点变量时,Delphi 调用 VarToDoubleAsString 进行转换,然后使用 OS 设置的十进制和千位分隔符(通过 VarR8FromStr)。如果必须更改SysUtils.DecimalSeparator
并且SysUtils.ThousandSeparator
. 例如运行以下程序:
第一个测试工作正常,第二个测试失败。
有没有办法让 Variant 转换使用SysUtils.DecimalSeparator
and SysUtils.ThousandSeparator
?
java - 二进制印章:if list[middle] == key case
我正在为我的考试修改算法,我试图解决这个练习,但我想不出一个解决方案。
这是伪代码。
因此,现在的代码不满足后置条件,因为对于某些输入(例如 x = 1 和 a={0,1,1,1,1}),第 14 行返回的值不满足第 4 行的后置条件。练习要求:“替换第 14 行的“return middle;”。通过 while 循环并返回代码,使其满足后置条件。包括足够强的变体和不变式以暗示返回时的后置条件. 提示:确保你包括说明没有改变的内容。
我一直无法找到解决方案。谁能帮我?
提前谢谢,VJ
编辑:好的,谢谢你们俩的帮助。
} 返回中间;
我选择了中间的变体。并且不变量是:
0x
你认为这是正确的吗?
c++ - 返回特定类型的模板
我有一个模板函数,我希望返回 T 的类型或变体。我尝试执行以下操作,但是编译器抱怨它无法将“变体”转换为 int(我将这个函数与 T=int 一起使用)。
我应该如何实现这一点,以便我可以只返回变体或变体中包含的类型。
它是从向量结构中得到的。
python - 我在哪里可以找到 VARIANT 类型代码?(vboxapi问题)
我正在vboxapi
通过 COM 使用,我注意到一个错误......IMedium.CreateBaseStorage
按照他们的定义调用它会产生一个错误,“无效的 VARIANT 类型:20”。我将 20 的值更改为 19,这是另一个(整数)参数的 VARIANT:
但是,这不起作用,因为该值是硬盘驱动器的大小(以字节为单位),这意味着它最多可以是 4 GB,而我需要制作 80、120、250 GB 的硬盘驱动器等。
那么 8 字节整数的 VARIANT 类型是什么?我假设它是VT_I8
,但数值是多少?为了将来参考,我在哪里可以找到它们?
如果值为 20,那么我就完蛋了,因为那是失败的值……在这种情况下,还有其他人有什么建议吗?