Название: Как передать массив в качестве аргумента COM функции Отправлено: SCAD от Апрель 13, 2004, 16:55 Существует такая проблема. Пишу COM библиотеку на VC6 там одной функции надо передать в качестве аргумента массив чисел (double). Если написать аргумент типа double*, то VC-ные клиенты спокойно передайют массив, а вот VBA-шные видят этот аргумент как одно число типа double. Пробовал делать аргумент типа VARIANT* , но не удается выцепить значения(double) из указателя. Как быть? Если не трудно бросьте кусок кода.
Название: Как передать массив в качестве аргумента COM функции Отправлено: SCAD от Апрель 14, 2004, 09:54 Отвечаю сам себе... Может кому еще пригодиться
Код:
Название: Как передать массив в качестве аргумента COM функции Отправлено: EugeneVC от Апрель 14, 2004, 10:05 тоесть они указатели принимают?
Название: Как передать массив в качестве аргумента COM функции Отправлено: SCAD от Апрель 14, 2004, 12:09 Да! Причем указатели на место в памяти, где храняться ЗНАЧЕНИЯ а не всякая там лабудень, что идет c VARIANT- ом
Название: Как передать массив в качестве аргумента COM функции Отправлено: EugeneVC от Апрель 14, 2004, 13:21 а интересно если сервер на другой машине и память другая ?
или я че туплю Название: Как передать массив в качестве аргумента COM функции Отправлено: SCAD от Апрель 14, 2004, 13:57 А вот эти проблемы должен решить сам механизм COM/DCOM. А с практической точке зрнеия в твоей программе ничего не меняется
Название: Как передать массив в качестве аргумента COM функции Отправлено: Злой от Апрель 20, 2004, 18:42 Для пердачи массивов в COM используется вариант, который хранит массив вариантов. См. в MSDN описание функций
SafeArrayCreate SafeArrayCreateEx и т.д. Название: Как передать массив в качестве аргумента COM функции Отправлено: SCAD от Апрель 22, 2004, 08:34 Цитата: "Злой" Для пердачи массивов в COM используется вариант, который хранит массив вариантов. См. в MSDN описание функций SafeArrayCreate SafeArrayCreateEx и т.д. Кусок кода который я привел как раз и работает по этому механизму. Из MSDN-а он и взят. я думаю тема закрыта ;) |