134 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,816
1

Достать элемент из Variant массива из одного элемента

03.03.2021, 15:14. Показов 18824. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,

Поля дня бьюсь не могу понять:

У меня есть Вариантный массив из одного элемента:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
VARIANT arr;
arr.vt = VT_ARRAY | VT_VARIANT;
{
SAFEARRAYBOUND sab[2];
 
arr.parray = SafeArrayCreate(VT_VARIANT, 2, sab);
}
 
AutoWrap(DISPATCH_PROPERTYGET, &arr, pXlRange, (LPOLESTR)L"Value", 0); //Читаем данные из только одной екселевской ячейки
 
//Теперь в arr - есть точно один элемент.
 
//Теперь я хочу достать этот один элемент.
 
VARIANT v;
VariantInit(&v); // переменная куда будем записывать элемент из массива arr по индексу (1,1) - то есть самый первый элемент
 
//--------------------------------------------------------------------------------------------------------------------------------------------------
 
long index_[2] = {1, 1 }; 
 
SafeArrayGetElement(arr.parray, index_, &v); // получим указанный элемент в переменную v по индексу элемента index_
Но после выполнения SafeArrayGetElement, v - все равно пустая. Если в arr - минимум 2 элемента, то проблем нет.

Я где то с размерностями в SAFEARRAYBOUND или SafeArrayCreate - накосячил ?

Добавлено через 12 минут
SafeArrayGetElement возвращает:
C++
1
E_INVALIDARG     Один из аргументов неверен.
Но не пойму, какой может быть не верный.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2021, 15:14
Ответы с готовыми решениями:

Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы
ребят не могу подобрать алгоритм ,такой что когда елемент одного массива больше елемента другого...

Записать два элемента одного массива, как один элемент другого
Здравствуйте) есть такое задание: нужно составить таблицу истинности(дискретная математика). И в...

Достать данные из variant
Здравствуйте! Использую visual c++ 2010 + QtCreator. Пытаюсь извлечь данные из wmi класса...

Boost::variant достать значение
class parser { public: struct DATA { uint8_t vtype; struct st0 { float val0,...

2
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
03.03.2021, 20:08 2
Цитата Сообщение от Optimus11 Посмотреть сообщение
У меня есть Вариантный массив из одного элемента:
https://www.cyberforum.ru/com-... 38696.html
0
COM‐пропагандист
791 / 739 / 144
Регистрация: 18.12.2014
Сообщений: 2,137
Записей в блоге: 4
04.03.2021, 21:57 3
C
1
SAFEARRAYBOUND sab[2]
А кто инициализировать будет?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2021, 21:57
Помогаю со студенческими работами здесь

Как проверять элемент массива Variant на тип?
Как проверять элемент массива Variant на тип (числовой или строковый)? Нижеследующий код выдает...

Первый элемент Variant массива интерпретатор видит как пустой
Доброго времени суток! У меня есть массив: Activities, который я объявляю в Module 1: Public...

При клике на элемент одного массива изменить элемент другого массива с таким же индексом
Привет друзья. Возник вопрос. Есть такая разметка: <section> <div class="mass-1"></div>...

Даны два массива. Как перенести один/два элемента из одного в другой, и чтобы при переносе выбранный элемент удалился?
К примеру: переносим "Деда" из arr в arr1, при этом он должен удалится в arr и появится в arr1....

Получить новый массив B, каждый элемент которого равен сумме соответствующего элемента массива А и минимального элемента массива А
1) Дан одномерный массив А. Получить новый массив B, каждый элемент которого равен сумме...

Получить новый массив B, каждый элемент которого равен сумме соответствующего элемента массива А и минимального элемента массива А
1) Дан одномерный массив А. Получить новый массив B, каждый элемент которого равен сумме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru