2010-02-24 5 views
2

В MSDN documentation for CComSafeArray::MultiDimSetAt, alIndex описана следующим образом:CComSafeArray: Действительно ли индексы действительно обращены для MultiDimSetAt и MultiDimGetAt?

указатель на вектор индексов для каждого измерения в массиве. Самый правый (наименее значащий) размер - это alIndex [0].

В documentation for CComSafeArray::MultiDimGetAt, alIndex документирована иначе:

указатель на вектор индексов для каждого измерения в массиве. Самое левое (самое значительное) измерение - alIndex [0].

Это заставило меня думать, что, чтобы добраться до того же элемента, можно было бы необходимо изменить порядок индексов в многомерном массиве. Тем не менее, я не нашел это на практике.

Я злоупотребляю этим интерфейсом и получаю удачу, недопонимая документацию, или это возможно ошибка в документах?

+0

Скорее всего, так оно и работает. Мне пришлось автоматизировать excel в приложении C++ в прошлом году и пришлось отменить порядок параметров в вызове метода. – ChadNC

+0

ChadNC, порядок параметров в Dispatch's Invoke не относится к этому вопросу. – Andrey

ответ

1

Возможно, это ошибка документов - я предлагаю вам обратиться к документации SafeArrayGetElement/SafeArrayPutElement, поскольку она кажется более точным.

Чтобы установить и получить один и тот же элемент, вы должны использовать тот же массив индексов (без реверсирования).

Кстати, приятно поймать!

Смежные вопросы