问题标签 [bstr]

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 回答
806 浏览

visual-c++ - 谁拥有 _bstr_t::wchar_t*、_bstr_t::char* 运算符返回的字符串?

_bstr_t::wchar_t*, _bstr_t::char* 运算符返回不同类型的字符串。

我需要delete还是free他们?使用哪个功能?

0 投票
2 回答
1916 浏览

string - 如何检查 CComBSTR 是否以某个前缀开头?

我遇到了一段代码,我需要简单地对给定的 CComBSTR 对象(类似于Y.StartsWith("X"))进行前缀检查。C++ 对我来说有点陌生,我最关心的是效率。我不需要以任何方式修改 CComBSTR。我想要的只是返回一个布尔值是否以 X 前缀开头。

查看CComBSTR 成员下 API 中列出的运算符,它允许进行非常基本的比较,例如 ==、>、< 等。我对如何尝试解决这个问题有两个想法(如下所列)。但是,我对解决此问题的最有效/最简单的方法没有深入的了解。如果我完全不在基地,请告诉我。

  1. 使用BSRTToArray创建一个数组,然后在其中迭代前 n 个索引以检查它是否具有某个前缀。
  2. 从 CComBSTR 获取 BSTR 并在 BSTR 上进行一些比较(还没有弄清楚如何做到这一点)
0 投票
1 回答
473 浏览

c++ - OPOS BSTR* 未正确转换

因此,经过大量研究后,我发现使用 WideCharToMultiByte 非常适合通过 OPOS 将数据从控制对象发送到我的自定义 SO。好吧,我们遇到了一个错误。在 DirectIO 部分,C# 控制对象的映射是 DirectIO(int command, ref int data, ref string object);

在最长的时间内,我们只需要通过 DirectIO 发送简单的命令。例如,要打开 LED,我们会将数据设置为以毫秒为单位的长度,并将对象设置为颜色。当我们需要将数据写入标签或卡片时,必须将文本从特殊的 XML 样式的字符串解析为字节数组......现在需要我们需要一个字节数组,使用 ASCII 编码将该数组放入字符串形式,并让它写入..

问题是当我在我的服务对象中转换这个字符串时它没有正确转换它。即使 SysStringLen 知道长度是 4 字节,它似乎也停止在 null 上。示例 控制对象执行此操作

SO看到了这个

产生的输出

dataObject(4)-19:00:00:00

基本上只要达到第一个空字符,其余数据就会丢失。现在,如果我将数字从字符串转换为字符串,它可以正常工作,因为我有一个 ByteUtil 函数只是为了那个场合......但我似乎不应该这样做......为什么不能我只是把它作为一个字节数组?

0 投票
2 回答
1747 浏览

c++ - Qt ActiveX dynamicCall 返回值始终为空

这是对上一个问题的跟进:Qt ActiveX

我正在尝试在我的程序中使用 ActiveX 控件。

我知道有一个类似下面的功能(使用getDocumentation()):

但是当我尝试执行它时:

我总是得到:

我在网上搜索并看到他们的错误跟踪器上报告了一个类似的错误。它似乎还没有修复:

通过 dynamicCall() 调用函数不会通过 QVariant 返回值

还有一篇似乎有人遇到同样问题的帖子:

QAxObject 和 dynamicCall

有人知道解决方案/解决方法吗?

编辑:

原来的功能是SendCommand(LPCTSTR command,BSTR* ret)

BSTR*处理方式可能存在问题&QString

0 投票
2 回答
489 浏览

arrays - 将字符串数组传递给 COM 对象

我放弃了寻找适合以下方法的数据类型:

  1. 我有需要“BSTR 字符串向量”的 COM 对象方法(如 COM 文档所述)。

它完美地工作于:a)python(一切都来自python BTW)

b) VBS:

c) 但 VB 无能为力(引发“CComBaseContainer::GetMultipleAttributes failed”错误)

它尝试Out=Visum.Net.Zones.GetmultipleAttributes(In)了以下数据类型的这种方法,每次都出现相同的错误:

我怎样才能满足这种方法?

PS。从文档中引用:

GetMultipleAttributes ( [in] VARIANT AttrIDs, [out, retval] VARIANT *value)
返回容器所有网络对象的多个属性值。必须将属性 ID 指定为 BSTR 字符串的向量。返回值包含一个由所有对象和指定属性的值组成的 VARIANT 值矩阵。矩阵的行以标准顺序(按它们的键排序)对应于网络对象。列对应于指定顺序的属性。参数 [in] VARIANT AttrIDs Vectorof 属性 ID,如 ATTRIBUTE.XLS 中所示。[out, retval] VARIANT *value 容器中所有网络对象的这些属性的值矩阵

在此先感谢 i2

0 投票
1 回答
4264 浏览

c++ - c++ _bstr_t 而不是使用字符串

我有一些代码来读取文件,但它用于 std::string,我需要使用 _bstr_t 后面的代码可以正常工作。如何更改类型?

0 投票
2 回答
4299 浏览

c++ - 我们应该将 COM 中的 BSTR 类型视为值还是引用?

从ATL Internals一书中,我知道 BSTR 与 OLECHAR* 不同,BSTR 有 CComBSTR 和 CString。

根据 MSDN Allocating and Releating Memory for a BSTR,我知道调用者/被调用者的内存管理责任。

从 MSDN 取这条线,

HRESULT CMyWebBrowser::put_StatusText(BSTR bstr)

我仍然不知道如何bstr在我的实现中正确处理。因为我还有一个关于 BSTR 的基本问题——我们应该将bstr其视为一个值(如 int)还是作为一个引用(如 int*),至少在 COM 接口边界上。

我想在我的实现中尽快将 BSTR 转换为 CString/CComBSTR。对于转换,值或引用语义将完全不同。我已经深入研究了 CComBSTR.Attach、CComBSTR.AssignBSTR 等。但代码无法解决我的疑问。

MSDN CComBSTR.Attach 有一些代码片段,我觉得这是错误的,因为它不遵守为 BSTR 分配和释放内存。ATL Internals 说 SetSysString 将“释放传入的原始 BSTR”,如果我使用它,它将违反 BSTR 参数约定,就像 CComBSTR.Attach 一样。

总而言之,我想在实现中使用CString来处理原始BSTR,但不知道正确的方法......我在我的项目中写了一些只是工作代码,但我总是感到紧张,因为我不知道是否我是对的。

让我谈谈编码语言

0 投票
3 回答
4268 浏览

windows - 将 QString 转换为 BSTR,反之亦然

我想转换QStringBSTR,反之亦然。

这是我尝试转换QStringBSTR

并转换BSTRQString

这个对吗?换句话说,是否有任何数据丢失?如果是,正确的解决方案是什么?

0 投票
2 回答
749 浏览

c++ - 将 CComBSTR 与 NULL 进行比较

最近,我正在编写代码并发现以下代码:

最后一行提醒我,因为我正在比较一个NULL不直观的对象。但是在MSDN上看了一眼,是完全支持的:

所以我的问题是,为什么 API 设计CComBSTR允许这样的比较?只是为了更能容忍错误?

0 投票
1 回答
391 浏览

com - 将 BSTR 转换为浮点数的问题

我正在尝试将 BSTR 转换为浮动:

问题是如果 data = 239.78,这个函数可以正常工作,但是我以这种格式接收它们data = 239,78

此代码的输出为 239。

任何人都可以帮忙吗?谢谢你。