【问题标题】:CComSafeArray: Are Indices Really Reversed for MultiDimSetAt and MultiDimGetAt?CComSafeArray:MultiDimSetAt 和 MultiDimGetAt 的索引真的反转了吗?
【发布时间】:2011-01-20 17:40:35
【问题描述】:

MSDN documentation for CComSafeArray::MultiDimSetAt 中,alIndex 记录如下:

指向数组中每个维度的索引向量的指针。 最右边(最不重要)的维度是 alIndex[0]。

documentation for CComSafeArray::MultiDimGetAt 中,alIndex 的记录不同:

指向数组中每个维度的索引向量的指针。 最左边(最重要的)维度是 alIndex[0]。

这让我想到,要获得相同的元素,需要反转多维数组中索引的顺序。但是,我在实践中并没有发现这种情况。

我是否误用了这个界面并且很幸运,误解了文档,或者这可能是文档中的错误?

【问题讨论】:

  • 很可能就是它的工作方式。去年我不得不在一个 c++ 应用程序中自动化 excel,并且不得不颠倒方法调用中参数的顺序。
  • ChadNC,Dispatch的Invoke中的参数顺序不是这个问题所指的。

标签: c++ visual-studio com visual-c++ atl


【解决方案1】:

这似乎是文档错误 - 我建议您参考 SafeArrayGetElement/SafeArrayPutElement 文档,因为它似乎更准确。

要设置和获取相同的元素,您应该使用相同的索引数组(无需反转)。

顺便说一句,不错的收获!

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2012-03-13
    • 2013-06-24
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多