7 / 7 / 6
Регистрация: 18.03.2012
Сообщений: 43

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

30.04.2020, 12:39. Показов 20428. Ответов 6

Author24 — интернет-сервис помощи студентам
В стороннем приложении есть метод(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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2020, 12:39
Ответы с готовыми решениями:

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

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

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

6
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
30.04.2020, 15:06
Цитата Сообщение от 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  [ТС]
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
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
30.04.2020, 15:25
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  [ТС]
oleg-m1973, Извини можешь полностью написать как должна выглядеть функция. я чтото запутался
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
30.04.2020, 15:44
Лучший ответ Сообщение было отмечено 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  [ТС]
oleg-m1973, Спасибо. Даже не представляешь сколько я с этим мучался)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2020, 15:48
Помогаю со студенческими работами здесь

Как передать методу коллекции
Как предать методу Коллекции. public static string Vuvod(ArrayList o, ArrayList p) { int g=1, i=0; while(g!=int) { ...

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

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

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

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


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

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

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru