问题标签 [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++ - Variant * to string 抛出未知异常
我正在使用此代码在 C++ 上的 IWebBrowser2 网络浏览器中接收事件:
调用 (void)DocumentComplete 时出现此错误:
* webhost.exe 中 0x7c812afb 处未处理的异常:Microsoft C++ 异常:_com_error 在内存位置 0x0012ed50。*
如果在 DocumentComplete 上注释该行,则不会显示任何错误。也 try..catch 块不会捕获异常。
我想做的是使用 Variant * url 将其与 std::string 进行比较。
我怎样才能做到这一点?
c# - COM 方法调用在 C#、VB.NET 中失败,但在 Python 中有效
我在尝试使用的 COM 库时遇到问题。当我调用特定方法并传递它时,我得到一个 ArgumentException null
。这发生在我的 C# 项目和 VB.NET 项目(我使用 调用该方法Nothing
)中,我在 Visual Studio 2008 的“COM”列表中添加了库引用。当我在 Python 中调用相同的方法时,传入None
,该方法按预期工作,没有错误。我的理解是 Python 通过 DCOM 与 COM 库进行交互(我只有最模糊的概念),而当我在 C#/VB.NET 项目中引用它时,我可能会直接使用 COM 库。会不会发生什么事情会导致我传递的参数在它到达 COM 库之前搞砸了?我不确定这里发生了什么。我最近将 COM 库更新到了较新的版本,所以我想知道我是否在某个地方遇到了版本冲突,从而导致了异常。我从我的 C# 和 VB.NET 项目中删除了对 COM 库的所有引用,删除了所有目录,bin
并obj
重新添加了引用。这确实导致 Interop.MyCOMLibrary.dll 文件显示在obj
有今天的日期,而不是我一直看到的旧日期。
我对 COM 库的唯一文档描述了该方法,如下所示:
我现在正在尝试搜索有关Variant
参数的问题。
编辑:因此,虽然Type.Missing
其他解决方案可以让我顺利通过该方法调用,但尝试从该方法读取返回项目上的某些字符串属性会导致:
System.Runtime.InteropServices.COMException:项目不存在。
这是另一个在 Python 中工作但在 C# 中引发异常的示例,所以我猜测更多 DCOM 与 COM 的怪异。或者这可能是一个线程问题,因为我正在使用 MSTest 进行测试。
c# - .Net - Com PVariant 参数
我有点被一个奇怪的问题困住了。我需要通过第 3 方 Active-X 类型库控制一些硬件。我的程序是用 C# 编写的。问题是一个 API / COM 调用需要一个 PVariant 的引用 - 所以如果我正确地得到它一个指向 Variant 的指针。更糟糕的是,这只是不固定大小(元素计数)的 Varaint 数组的第一个地址。
问题是——除了这不是最佳实践之外——我没有机会改变这种方法,也没有办法解决它。
有人需要创建一个兼容 COM 的 Variant-array 并将它的起始地址传递给 COM 方法吗?这是怎么做的?
我将不胜感激任何帮助!
谢谢先进
科莱戈特
c++ - C++ - 提升得到问题
有人知道boost::get
for 是否boost::variant
是一个消耗性能的操作。
现在,我正在重构性能关键部分中的一些旧代码,其中“变体”是由容器为每种可能的类型和对应enum
的 .
显然,这很快,但很难看,现在当我必须重构代码以便它可以与另一种类型一起使用时,我想摆脱代码的旧部分并将其替换为boost::variant
.
此外,我不能简单地“分析两个变体并进行比较”,因为这种重构是一件很麻烦的事情,而且会非常耗时。
boost::get<x>
因此,如果有人知道与泛型类型调度相比的性能如何enum-based
,如果您分享这些知识,我将不胜感激。
还有另一种boost::variant<types>
与自定义访问者一起使用的变体(如boost::variant
文档中所述) - 这可能比boost::get
我的情况更快吗?
谢谢你。
string - 如何在 VBscript 中将字符串数组转换为变量数组?
我在 vbscript 中使用一个函数,它返回一个变体字符串数组。
问题是我无法从该数组中获取作业 ID 值,因为 vbscript 不处理类型化变量。当我尝试对 JobIDs 数组执行任何操作时,它只会给出类型不匹配。我在这里找到了一些有希望的信息,但是当我使用转换功能时:
它给了我相同的类型不匹配错误。我在这里遗漏了一些明显的东西吗?显然,这是一个官方的微软解决方案,所以我不确定为什么它似乎有同样的问题,即首先实际上无法对字符串数组执行任何操作。我已经在很多地方看到我的问题的第一部分得到了回答,都指向 MS 解决方案,但我还没有看到有人成功使用该解决方案的任何后续报告。
delphi - 如何为来自 TStream 的 Olevariant 变量赋值?
我需要从 Stream 中读取数据并将读取的缓冲区放入OleVariant
(VarArray) 变量中。
如何将读取的值分配给TMemoryStream
变量olevariant
?
我正在使用德尔福 5。
delphi - 无效的变体类型错误 Delphi 2010
在 iccDynamicObject.define() -> tmp := locate(_id); 处设置 DELPHI 2010 断点 将导致@ Project Project1.exe 引发异常类 EVariantBadVarTypeError 并带有消息“无效的变体类型”。@
代码在DELPHI 7中测试,没有遇到这个问题!
附言。代码以 delphi-7 样式重写,没有用于演示问题的类内类型...
已解决 -> 不要使用类内泛型类型,例如
这样的事情会促使调试器或编译器做意想不到的事情!!!代码编译并正常工作。但在我的情况下,随着单元增长代码变得不稳定并强迫我进行一些代码重构,只是一点点,但不仅仅是不方便......
你被注意到了:)))
c++ - 提升::变体到 std::string
我有一个看起来像这样的提升变体:typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
我需要能够将此变体中的任何值转换为 std::string,我想知道是否有一些模板类型函数可以用来执行此操作?
或者什么是最有效的方法?
我目前会实现一堆重载函数,每个函数都采用一个类型,然后使用它进行转换,std::stringstream
或者posix_time
我会使用它的转换函数。也许有更好的方法?
c - 如果变体具有 INF 或 NAN 值,如何使变体的 ChangeType 浮动?
我在变体中有浮点值,最初这个变体是 bstr 类型。我正在使用VariantChangeType更改为浮点类型。然后我从中获取浮点值,然后我将其转换为字节向量格式。
如果变体具有浮点值,则可以正常工作。如果变体具有INF值,则 VariantChangeType会失败。所以我从variant.fltVal 得到0。
如果变体具有 INF 或 NAN 值,如何将类型更改为浮动?我想在浮点数中获取 INF 或 NAN 值。
boost - 函数对象内部的内部调用,(Boost::apply_visitor 特定)
我目前正在写一个set expression evaluator,它生成set<T>和set<set<T>>,下面的代码是显示表达式的结果。
当我尝试使用集合代码评估集合集时,我遇到的问题正在发生,显然我正在使用它,因为这是一种很好的做法,但编译器似乎不喜欢我用来构造调用的语法。
有两条这样的线,它们产生痕迹..
e:\documents\level 3\advanced software engineering\coursework\coursework\boost\variant\detail\apply_visitor_unary.hpp(76) : error C2039: 'apply_visitor' : is not a member of 'std::set<_Kty>' 1> with 1> [ 1> _Kty=std::string 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.h(96) :见参考函数模板实例化'std ::basic_string<_Elem,_Traits,_Ax> boost::apply_visitor::ExpressionTree::string_visitor,const std::set<_Kty>>(const Visitor &,Visitable &)' 正在编译 1> 和 1> [ 1> _Elem =char, 1> _Traits=std::char_traits, 1> _Ax=std::allocator, 1> T=std::string, 1> _Kty=std::string, 1> Visitor=Context::ExpressionTree::string_visitor, 1> Visitable=const std::set 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.h(90) : 在编译类模板成员函数 'std::string Context::ExpressionTree::string_visitor::operator ()(std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.cpp(337) : 参见类模板实例化 'Context::ExpressionTree::string_visitor ' 正在编译 1> 与 1> [ 1> T=std::string 1> ]ExpressionTree::string_visitor, 1> Visitable=const std::set 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.h(90) : 在编译类模板成员函数'std ::string Context::ExpressionTree::string_visitor::operator ()(std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1 > ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.cpp(337) : 参见类模板实例化 'Context::ExpressionTree::string_visitor' 正在编译 1> 和 1> [ 1> T=std::字符串 1> ]ExpressionTree::string_visitor, 1> Visitable=const std::set 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.h(90) : 在编译类模板成员函数'std ::string Context::ExpressionTree::string_visitor::operator ()(std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1 > ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.cpp(337) : 参见类模板实例化 'Context::ExpressionTree::string_visitor' 正在编译 1> 和 1> [ 1> T=std::字符串 1> ]] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.h(90) : 在编译类模板成员函数'std::string Context::ExpressionTree::string_visitor::operator ()( std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1> ] 1> e:\documents\level 3\advanced software engineering\ coursework\coursework\context.cpp(337) :请参阅对类模板实例化 'Context::ExpressionTree::string_visitor' 的引用 1> 编译 1> [ 1> T=std::string 1> ]] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.h(90) : 在编译类模板成员函数'std::string Context::ExpressionTree::string_visitor::operator ()( std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1> ] 1> e:\documents\level 3\advanced software engineering\ coursework\coursework\context.cpp(337) :请参阅对类模板实例化 'Context::ExpressionTree::string_visitor' 的引用 1> 编译 1> [ 1> T=std::string 1> ]字符串 Context::ExpressionTree::string_visitor::operator ()(std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.cpp(337) : 请参阅正在编译的类模板实例化 'Context::ExpressionTree::string_visitor' 1> 与 1> [ 1> T=std::string 1> ]字符串 Context::ExpressionTree::string_visitor::operator ()(std::set<_Kty>) const' 1> with 1> [ 1> T=std::string, 1> _Kty=std::set 1> ] 1> e:\documents\level 3\advanced software engineering\coursework\coursework\context.cpp(337) : 请参阅正在编译的类模板实例化 'Context::ExpressionTree::string_visitor' 1> 与 1> [ 1> T=std::string 1> ]请参阅对类模板实例化 'Context::ExpressionTree::string_visitor' 的引用 1> with 1> [ 1> T=std::string 1> ]请参阅对类模板实例化 'Context::ExpressionTree::string_visitor' 的引用 1> with 1> [ 1> T=std::string 1> ]
有谁知道如何表达这种呼叫?
干杯,亚历克斯