问题标签 [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 投票
2 回答
1037 浏览

delphi - 我如何(或者如果我不能)在简单的 DLL 上使用变体?

我想将内部对象的某些功能公开为 DLL - 但该功能使用变体。但我需要知道:我可以使用 Variant 参数导出函数和/或返回 - 还是更好地使用纯字符串表示?

与语言无关的 POV 有什么更好的(消费者不是用 Delphi 制造的,但都将在 Windows 中运行)?

0 投票
1 回答
1787 浏览

c# - OLEVariant 到 .Net byte[]

我有一个伪装成 .Net 对象的 OLEVariant,我通过网络从客户端组件接收到该对象。我知道内容是一个字节数组,但我不知道如何将这些内容转换为本机 .Net 字节数组 (byte[])。关于如何完成转换的任何线索?

编辑:我们回答了我们自己的问题。要将 OleVariant(字节数组类型)转换为 .Net byte[] 需要在对象进入 .Net Array 时将其泵入,获取 Array 的上限,创建一个上限大小的新 byte[],然后最后做一个 Array.Copy()。

0 投票
5 回答
1110 浏览

delphi - Delphi的基本代码

我正在努力解决以下问题:

目标是为 openoffice 参数化一个自动化服务器,我正在用 Delphi 编程。

我想翻译成 Delphi 代码的基本代码是:

我在德尔福的尝试看起来像

这不起作用有没有人建议如何解决这个问题?

0 投票
1 回答
2216 浏览

.net - 将 Delphi 5 OleVariant 编组为 C#

我正在尝试使用 C# (2.0/3.5) 中的一些旧版 Delphi 5 DLL。一些导出的函数是这样声明的:

我希望使用 Marshal.GetDelegateForFunctionPointer 将它们设置为委托,但我无法正确地编组数据。我正在使用 LoadLibrary 和 GetProcAddress 的 kernel32 导入,因此我依靠 GetDelegateForFunctionPointer 来执行我的实际编组,而不是静态 p/invoke 声明。

由于 .NET 编组服务可以将对象编组为 COM OleVariants,因此我尝试了这个。但这会导致异常:“PInvoke 限制:无法返回变体。”。所以我想我需要使用自定义编组器。

将 Delphi 5 OleVariant 编组为 .NET 可读的正确方法是什么?

0 投票
2 回答
6010 浏览

c++ - 在 VARIANT 和 _variant_t 之间复制

我相当确定我可以安全地做到:

但是反过来呢:

我在我的应用程序中看到了一些非常奇怪的行为,我将其归结为与 COM 相关的线程问题。但后来我想知道我是否错误地使用变体搞砸了内存。在 funcB 中,VARIANT V 是为 COM 调用准备的安全数组的一部分。使用我的 V=vt 行,我是否在做一个浅拷贝,当同一个变体被释放两次时会破坏事情?

我真的很喜欢 _variant_t 并避免使用所有 ::VariantXXX 方法,有没有一种巧妙的方法可以在 funcB 中使用 _variant_t 来自动复制?

0 投票
2 回答
14015 浏览

c++ - 如何构建指向 VARIANT 的 SAFEARRAY 指针?

我正在尝试通过以下方法使用 COM 组件:

如何在 C/C++ 中创建 paramValues 数组?

0 投票
2 回答
2523 浏览

vb.net - VB6 转换为 VB.net 变体问题

我的任务是将 VB6 程序转换为 VB.NET。在我的在线研究中,每个人似乎都说我需要检查我的代码并摆脱我拥有的任何变体。到目前为止,我的运气很好,但是我在更换这个时遇到了问题。

我对 VB(6 或 .net)仍然很陌生,我很难找到替代方案。VB.net 中的转换工具能很好地处理这个问题吗?还是我需要改变这个?如果我这样做,是否有更好的选择?原谅我的菜鸟。

先感谢您。

0 投票
4 回答
1969 浏览

c# - 将 VB6 变体分配给对象

我有一个使用 C# 编译的 Dll 的 VB6 应用程序。我已经通过 COM 成功地完成了这项工作。但我的问题是我有一个 Variant 数组,其中包含 String 和 Double 数据类型。我需要将此数组传递给我的 C# Dll,它将数组作为对象接收。因此,我需要做的就是将 Variant 数组转换为 C#“可理解”的 Object 数组。有人对此有任何线索吗?

0 投票
1 回答
1799 浏览

delphi - Delphi 2010 中变体的函数 Null

Delphi 2010中的这个功能在哪里?

在 Delphi 6 中,它位于 Variants 中。

0 投票
1 回答
267 浏览

variant - 如何通过 COPYDATASTRUCT 发送 VARIANT_bstr

我需要使用 COPYDATASTRUCT 将 VARIANT 值发送到另一个应用程序。这是我用来发送消息的结构。

在我的代码中,我将 VARIANT 初始化为类型 BSTR 并分配一个字符串,如下所示。

然后我使用 COPYDATASTRUCT 发送它,如下所示。

此消息成功接收到我的第二个应用程序,但是,当我将其转换回原始结构时,“bstrVal”表示错误的指针

我正在努力解决这个错误,所以期待您的宝贵帮助。请注意,其他 varinat 类型(int、double)可以成功转换回来,并且此错误仅与 bstr 相关。:(

谢谢你