Форум программистов, компьютерный форум, киберфорум
C++: COM, OLE, ActiveX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
7 / 7 / 6
Регистрация: 18.03.2012
Сообщений: 43
1

Как получить\передать методу нужный тип данных?

30.04.2020, 12:39. Просмотров 2059. Ответов 6

В стороннем приложении есть метод(get/put) из которого получаю данные которые никак не получается обработать.
На картинки вверху описание того что получаю из стороннего метода.
Внизу то что я пытаюсь ему передать. но чтото идет не так(. Как переделать чтобы метод принимал данные?

Вот как я пытаюсь передать в него данные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
variant_t SetValue(double x1, double x2) {
    double mySize[2] = { x1, x2 };
    SAFEARRAY * Bound;
    VARIANT Array;
    Array.vt = VT_ARRAY | VT_R8;
    Bound = SafeArrayCreateVector(VT_R8, 1, 2);
    for (int i = 0; i < 2; i++)
    {
        long index = i + 1;
        SafeArrayPutElement(Bound, &index, &mySize[i]);
    }
    Array.parray = Bound;
    return Array;
}
0
Миниатюры
Как получить\передать методу нужный тип данных?  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2020, 12:39
Ответы с готовыми решениями:

Как передать свой тип данных между страницами?
Задача такая: написать в одном textBox слово, в другом цифру. Ну и в будущем писать что хочу,...

Как в стандартную функцию WinAPI передать тип данных std::string вместо char*?
Помогите пожалуйста. Мне надо в GetDlgItemText передать std::string. Как это можно сделать?...

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

Как передать методу коллекции
Как предать методу Коллекции. public static string Vuvod(ArrayList o, ArrayList p) { int...

6
5829 / 3967 / 1626
Регистрация: 07.05.2019
Сообщений: 12,324
Записей в блоге: 1
30.04.2020, 15:06 2
Цитата Сообщение от Nindzzya Посмотреть сообщение
Внизу то что я пытаюсь ему передать. но чтото идет не так(. Как переделать чтобы метод принимал данные?
Вверху у тебя массив VT_VARIANT, а внизу - VT_R8
C++
1
2
3
4
5
6
7
8
9
10
        SAFEARRAY *psa = ::SafeArrayCreateVector(VT_VARIANT, 0, 2);
 
        long i = 0;
        _variant_t v;
        v = x1;
        ::SafeArrayPutElement(psa, &i, &v);
 
        ++i;
        v = x2;
        ::SafeArrayPutElement(psa, &i, &v);
И ты уверен, что у тебя в метод variant передаётся, а не safearray?
Покажи метод
0
7 / 7 / 6
Регистрация: 18.03.2012
Сообщений: 43
30.04.2020, 15:21  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
inline void Libra::TextItem::PutPosition ( const _variant_t & _arg1 ) {
    _com_dispatch_method(this, 0x4f72676e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, 
        L"\x000c", &_arg1);
}
 
inline _variant_t Libra::TextItem::GetPosition ( ) {
    VARIANT _result;
    VariantInit(&_result);
    _com_dispatch_method(this, 0x4f72676e, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&_result, NULL);
    return _variant_t(_result, false);
}
0
5829 / 3967 / 1626
Регистрация: 07.05.2019
Сообщений: 12,324
Записей в блоге: 1
30.04.2020, 15:25 4
C++
1
2
3
        VARIANT vArray; 
        V_VT(&vArray) = VT_ARRAY | VT_VARIANT;
        V_ARRAY(&vArray) = psa;
0
7 / 7 / 6
Регистрация: 18.03.2012
Сообщений: 43
30.04.2020, 15:41  [ТС] 5
oleg-m1973, Извини можешь полностью написать как должна выглядеть функция. я чтото запутался
0
5829 / 3967 / 1626
Регистрация: 07.05.2019
Сообщений: 12,324
Записей в блоге: 1
30.04.2020, 15:44 6
Лучший ответ Сообщение было отмечено Nindzzya как решение

Решение

Цитата Сообщение от Nindzzya Посмотреть сообщение
oleg-m1973, Извини можешь полностью написать как должна выглядеть функция. я чтото запутался
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        SAFEARRAY *psa = ::SafeArrayCreateVector(VT_VARIANT, 0, 2);
 
        long i = 0;
        _variant_t v;
        v = x1;
        ::SafeArrayPutElement(psa, &i, &v);
 
        ++i;
        v = x2;
        ::SafeArrayPutElement(psa, &i, &v);
 
        variant_t vArray; 
        V_VT(&vArray) = VT_ARRAY | VT_VARIANT;
        V_ARRAY(&vArray) = psa;
 
PutPosition(vArray);
1
7 / 7 / 6
Регистрация: 18.03.2012
Сообщений: 43
30.04.2020, 15:48  [ТС] 7
oleg-m1973, Спасибо. Даже не представляешь сколько я с этим мучался)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2020, 15:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как передать значения методу
Есть следующий класс: class graphics { private Box box0 = new Box(); ...

Как передать путь файла методу?
Доброго времени суток! Пишу программу обработка изображений (просто небольшая программа,...

Как передать методу строку матрицы
У меня есть метод для сортировки, но я хочу отсортировать одну строку из матрицы. Как мне правильно...

Как правильно передать аргументы в нужный метод?
Многопоточность xNet по инструкции как бе: MultiThreading rst = new MultiThreading(); ...

Как отсортировать данные и передать их по методу POST?
Помогите, пожалуйста, разобраться новичку. Необходимо сделать следующее: на страничке есть форма...

Как передать методу произвольное количество параметров?
Как нужно создать метод, чтобы ему можно было передавать любое количество параметров, пусть даже...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.