问题标签 [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.

0 投票
3 回答
1342 浏览

variant - 如何使用 EuCOM 在 Euphoria 中创建 BSTR 的变体数组?

到目前为止,我已经弄清楚了如何使用 Typelib 将 Unicode 字符串 bSTR 传入和传出 Euphoria DLL。到目前为止,我无法弄清楚的是如何创建和传回 BSTR 数组。

到目前为止我拥有的代码(以及include用于 EuCOM 本身和部分 Win32lib 的 s):

类型库的一部分是:

VB6中的测试代码是:

到目前为止,我设法得到的只是来自 DLL 的错误“0”。有任何想法吗?任何人?

0 投票
5 回答
46725 浏览

c++ - 如何在 C++ 中存储变体数据

我正在创建一个存储有关特定数据源的元数据的类。元数据以树的形式结构化,与 XML 的结构化方式非常相似。元数据值可以是整数、十进制或字符串值。

我很好奇 C++ 中是否有一种好方法可以为这种情况存储变体数据。我希望变体使用标准库,因此我避免使用可用的 COM、Ole 和 SQL VARIANT 类型。

我当前的解决方案如下所示:

MetaValue 类具有各种 Get 函数,用于获取当前存储的变量值,但它最终使每个值查询成为 if/else if 语句的一大块,以确定我正在寻找的值。

我还探索了将值仅存储为字符串,并执行转换以获取不同的变体类型,但据我所知,这会导致一堆内部字符串解析和错误处理,这并不漂亮,打开使用浮点值解决了一大堆旧的精度和数据丢失问题,并且仍然不能消除上述 if/else if 问题的查询。

是否有人使用标准库实现或看到了更清洁的用于 C++ 变体数据类型的东西?

0 投票
1 回答
4459 浏览

c++ - COM, VARIANT 包含 BSTR。谁分配?

好的,所以我真的想不出一个恰当的标题来总结这一点。

IPrintPipelinePropertyBag 接口具有 AddProperty 方法,该方法非常恰当地“将属性添加到属性包”。

http://msdn.microsoft.com/en-us/library/aa506384.aspx

AddProperty( [in, string] const wchar_t *pszName, [in] const VARIANT *pVar );

我们使用以下代码将字符串添加到属性包中。

但是,很明显,所创建的 CComBSTR 和 CComVariant 会在一段时间后超出范围。我不确定 PropertyBag 是否处理字符串并制作自己的副本。因为我们可以在 VARIANT 中存储各种东西,所以不应该这样。

假设未处理字符串,我的问题是,在 COM 中执行此操作的模式是什么?我应该如何传递一个包含已分配字符串的 VARIANT,即使调用 AddProperty 的线程先死亡,也使该字符串可用于其他线程,并正确取消分配字符串?

0 投票
10 回答
4307 浏览

interface - 鸭子类型与旧的“变体”类型和/或接口有何不同?

我经常看到“鸭子打字”这个短语在流传,甚至遇到一两个代码示例。我太懒了,没时间做自己的研究,有人可以简单地告诉我:

  • 'duck type' 和 old-skool 'variant type' 之间的区别,以及
  • 提供一个我可能更喜欢鸭子打字而不是变体打字的例子,以及
  • 提供一个我必须使用鸭子打字来完成的事情的例子?

鸭子打字插图由 The Register 提供

我并不是想通过怀疑这种“新”结构的力量来显得家常便饭,我也不是通过拒绝进行研究来回避这个问题,但我对我所看到的所有蜂拥而至的炒作感到震惊最近呢。对我来说,它看起来像没有打字(又名动态打字),所以我没有立即看到优势。

附录:感谢到目前为止的示例。在我看来,使用“O->can(Blah)”之类的东西相当于进行反射查找(这可能并不便宜),和/或与编译器可能会说的(O 是 IBlah)大致相同能够为您检查,但后者的优点是可以将我的 IBlah 接口与您的 IBlah 接口区分开来,而其他两个则没有。当然,每个方法都有很多微小的接口会变得混乱,但同样可以检查很多单独的方法......

...所以我还是不明白。这是一个很棒的节省时间的方法,还是一个全新的麻袋里的旧东西?需要鸭子打字的例子在哪里?

0 投票
3 回答
8573 浏览

delphi - 为什么 Delphi 变体不能保存对象?

为什么 Delphi 变体不能保存对象?更重要的是,这种限制背后的原因是什么?

0 投票
5 回答
759 浏览

c++ - C++ 中可用的原始类型的事实列表

例如,如果您要编写一个变体类型类,您自然需要识别该类的实例所承载的类型。我想知道是否有人知道人们可能感兴趣的所有原始数据类型的任何官方或半官方(事实上?)参考?

只有原语,不需要像stringhandle这样的抽象类型。

谢谢。

0 投票
1 回答
5220 浏览

visual-c++ - 使用 CComVariant 访问 SafeArray 的问题

我有以下代码块

返回安全数组的方法

我的疑问是,上面的第一个代码块有任何内存泄漏吗?它CComVariant本身是否处理有关清洁的所有事情?还是我也手动做SafeArrayDestroy(paArray);

提前致谢!

0 投票
5 回答
269 浏览

vb.net - Understanding Variables in Visual Basic

What's the main problem if I don't declare the type of a variable? Like, Dim var1 versus Dim var1 as Integer.

0 投票
4 回答
6413 浏览

delphi - Delphi:在变量数组中传递 TObject

我有一个需要 TObject 类型参数的过程,如下所示:

我有一个 Variant 数组,我正在循环调用该过程,如下所示:

编译器给出错误提示:“不兼容的类型:TObject 和 Variant”。

我能做些什么来解决这个问题?

更多信息:到目前为止,我一直在变量数组中传递简单类型(字符串、数字、日期)(这些数组通常是不同类型的混合——我最终将它们作为参数传递给数据库存储过程)。现在我还需要(在某些情况下)传递一个 TObject。

传递值的最合适的数据类型/结构是什么,可以同时保存简单类型和对象?我想我可以创建我自己的 TParam 类型,它对两者都有一个字段,但我不确定确切的语法。有人有这方面的例子吗?

0 投票
5 回答
34460 浏览

ms-access - 访问查询错误 - Null 和 Variant 数据类型 - 如何修复此错误?

全部,

这个错误让我发疯。我花了 2 个小时试图弄清楚和/或解决它,但没有运气。这是错误:

“您试图将 NULL 值分配给不是 Variant 数据类型的变量。”

这是我的 SQL:

我认为在这一点上出现了复杂情况—— tbl_parent_001 是通过 group by 从另一个更大的表创建的(以单个化 PARENTNAME 记录)。我必须手动进入表并将字段 NEWPARENTID 分配为类型自动编号,以便我可以为 PARENTNAME 记录提供主键。现在,当我运行查询时,出现上述错误。我怀疑这是导致我出现问题的自动编号,但我不知道通过使用查询创建主键的任何其他方法。

因此,我需要在两件事上提供帮助:(1) 在当前查询设置的情况下减轻错误;(2) 找出更好的方法来创建主键,而不是通过表的设计视图手动输入主键。

谢谢,诺亚