【问题标题】:pass array of strings into COM object将字符串数组传递给 COM 对象
【发布时间】:2013-02-22 17:43:15
【问题描述】:

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

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

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

Visum.Net.Zones.GetmultipleAttributes(["No","Name","XCoord","YCoord","Name","SHAREPRTORIG","SHAREPRTDEST"])

b) VBS:

Visum.Net.Zones.GetmultipleAttributes(Array("No","Name","XCoord","YCoord","Name","SHAREPRTORIG","SHAREPRTDEST"))

c) 但是 VB 什么都做不了(出现“CComBaseContainer::GetMultipleAttributes failed”错误)

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

Dim Out As Object
Dim In As New List(Of String)
Dim In(2) As String
In.toArray()

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

PS。引用文档:

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

提前致谢 i2

【问题讨论】:

  • 我在 VB.NET 中,我无法从 1 开始索引(可以吗?)Error Array lower bounds can be only '0'

标签: arrays vb.net com bstr


【解决方案1】:

如果这在 VBS 中有效:

Visum.Net.Zones.GetmultipleAttributes(Array("No","Name","XCoord","YCoord","Name","SHAREPRTORIG","SHAREPRTDEST"))

这应该在 VB.NET 中工作:

Dim a() As String= New String() {"No", "Name", "XCoord","YCoord","Name","SHAREPRTORIG","SHAREPRTDEST"}

Visum.Net.Zones.GetmultipleAttributes(a) 'you might need a() instead

看看这个问题以获得澄清:Equivalent of Array() in VB.NET?

【讨论】:

  • 但是和weardk的结构非常相似(略有变化)
【解决方案2】:

以下终于成功了,但不要问我为什么:

    Dim In() As Object = {"No","Name","XCoord","YCoord","Name","SHAREPRTORIG","SHAREPRTDEST"}
    Dim VisumOut(,) As Object
    VisumOut = Visum.Net.Zones.GetMultipleAttributes(In)

经过数百万次尝试,它终于好了。如果您知道这是为什么,请给我们正确的答案。

Powodzenia,拉法乌!

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 2012-08-21
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多