问题标签 [safearray]

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 投票
1 回答
1419 浏览

com - 正确清理 CComSafeArray

鉴于:

我希望 CComSafeArray 的 dtor 会在每个包含的成员上调用 ::VariantClear 并且文档似乎表明:

在某些情况下,最好在不调用 VariantClear 的情况下清除代码中的变体。例如,您可以将 VT_I4 变体的类型更改为另一种类型,而无需调用此函数。BSTR 的 Safearrays 将在每个元素上调用 SysFreeString,而不是 VariantClear。但是,如果收到 VT_type 但无法处理,则必须调用 VariantClear。变体的安全数组也将对每个成员调用 VariantClear

(来源: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms221165 (v=vs.85).aspx )

但是我在 atlsafe.h 的代码中没有看到这样的事情发生。

我只是在错误的地方寻找,还是这只是作为 ::SafeArrayDestroy() 的副作用而发生的——这是唯一通过 CComSafeArray dtor 发生的事情。

0 投票
2 回答
671 浏览

c++ - Mac OSX的c ++中的变体类型结构(oaidl.h)?

我正在尝试移植我在 Windows 中开发的 c++ dll,这些 dll 广泛使用了 Variant (ole/com) 类型的结构(请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ms221627%28v =vs.85%29.aspx)。该类型在visual studio的oaidl.h文件中定义,在windows中用“windows.h”导入。

有没有现有的方法可以在 xcode 中的 c++ 中使用这种类型?显然包含 windows.h 没有意义,也不起作用。你知道在 OSX 上使用这种类型的库吗?请注意,该变体使用我在 mac 上也找不到的 safearray 结构。

0 投票
1 回答
608 浏览

c++ - SafeArrayAccessData 是否曾经返回与 pvData 不同的指针?

我知道 SafeArrayAccessData 也进行锁定/解锁,但没关系,我只想知道它是否返回一个不同于pvData.

例如,这段代码永远不会触发断言(我可以在测试中看到):

有谁知道SafeArrayAccessData会产生不等于的指针的情况pvData

0 投票
2 回答
5984 浏览

string - Delphi OleVariant 到 COM 库中的字符串数组

我有 Delphi 2006 客户端应用程序。这个客户端从 COM 服务器接收一个 Olevariant 类型的数据。功能是:

此函数返回一个字符串数组。我无法从 delphi 读取 OleVariant 类型的数据。

在 Excel VBA 中,它的工作原理:

我试图将 OleVariant 转换为 Psafearray ...

但我在这一行收到了一个例外:

调试器故障通知
项目...出现错误消息:'在 0x751de18c 处的访问冲突:读取地址 0xabababab'。进程停止器。使用 Step 或 Run 继续

任何意见和建议将不胜感激。

0 投票
1 回答
243 浏览

c++ - 无法从 SafeArray 存储/检索值

我是 SAFE ARRAY 概念的新手,MSDN并没有太大帮助。我试图将一个安全数组传递给一个函数。

这是我的代码

不幸的是,安全数组中的值没有更新。我做错了什么?

0 投票
1 回答
2008 浏览

c++ - 如何将字符串数组转换为 SAFEARRAY 或 VARIANT 或 COleVariant?

我正在研究 OLE(COM),所以我想将字符串数组转换为 SAFEARRAY 或 CComSafeArray 或 COleSafeArray 或 VARIANT 或 COleVariant。

  1. CString[100] -> SAFEARRAY
  2. CString[100] -> CComSafeArray
  3. CString[100] -> COleSafeArray
  4. CString[100] -> 变体
  5. CString[100] -> COleVariant

将字符串数组转换为 SAFEARRAY 或 CComSafeArray 或 COleSafeArray 或 VARIANT 或 COleVariant 发送 OLEMethod 以执行 COM。

请帮我

0 投票
0 回答
188 浏览

c++ - 为什么 SafeArrayUnaccessData 会抛出调试断言失败

下面是我的代码

这里 SafeArrayUnaccessData(sa) 会抛出 debug assertion failure 。

当我注释掉 SafeArrayUnaccessData(sa) 程序工作正常

在此处输入图像描述

0 投票
1 回答
3659 浏览

python - 在 Python 中创建字符串的 SAFEARRAY

我正在尝试调用一个 COM 方法,该方法需要将 SafeArray 的字符串作为引用传递,然后用方法结果填充该方法。这是 VBA 中的代码,可以完美运行:

现在,我正在尝试使用 win32com 模块对 Python 3.4 执行相同的操作。但是,我一直在尝试创建具有正确类型的第二个参数,根据combrowse.py 应该是“Pointer SafeArray String”。

这是我的第一次尝试:

我也尝试将该变量构造为

但它也没有用。错误消息如下所示:

0 投票
1 回答
197 浏览

c# - WCF Com Interop GetRecordInfoFromGuids 返回旧格式或无效类型库

我在 C# 中定义的 WCF 服务中有一个结构为

我正在尝试从 MFC 应用程序创建此结构的 SafeArray。当像这样调用 GetRecordInfoFromGuids

我得到一个返回值

这有什么问题?

0 投票
1 回答
301 浏览

qt - 如何在 Qt ActiveX 中使用 SAFEARRAY **

SAFEARRAY **在 Qt ActiveX 中如何使用?SAFEARRAY **Qt中的类型是什么?