powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возвращаемое значение
3 сообщений из 3, страница 1 из 1
Возвращаемое значение
    #32669616
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть объект
При выполнении его метода он возвращет значение. Если мы знаем тип возвращаемого значения, то все хорошо.
double k;
BYTE bTypes[1] = { 0 };
drvMain.InvokeHelper(id,DISPATCH_METHOD,VT_R8,(void*)&k,bTypes);

Но если неизвестно что он вернет.
Как тогда описать тип приемника? Как быть?
...
Рейтинг: 0 / 0
Возвращаемое значение
    #32669633
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
это как? ты об RTTI?
напиши пример, где тип заранее не известен.
...
Рейтинг: 0 / 0
Возвращаемое значение
    #32669659
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Незнаю .. или я что-то не так объясняю или чего-то недопонимаю..

Мне передают указатель Idispatch объекта
Этот объект хранит "массив". Именно в кавычках, что это такое на самом деле я незнаю. Он хранит массив данных Разных типов. Поэтому вызов метода типа Получить элемент(строка, колонка) может вернуть что угодно, в зависимости от того что туда записали.

ОнSTDMETHODIMP CAddIn::SetPropVal(long lPropNum,VARIANT *pvarPropVal)
//в pvarPropVal указатель на Idispatch
IDispatch *pT;
double k, NColumn, nString;
nColumn=4, nString=5;
DISPID id;
BYTE bTypes[3] = {VT_R8,VT_R8, 0 };
BSTR bcs = T2OLE("GetValue"); // Так вот тип возвращаемого значения метода GetValue неизвестен, он зависит от типа значения элемента [4][5]
BSTR *arNames = &bcs;
//Ищем Id метода
pT->GetIDsOfNames(IID_NULL,arNames,1,MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),SORT_DEFAULT),&id);
//Вызываем метод
drvMain.InvokeHelper(id,DISPATCH_METHOD,???????(здесь куда пихать возвращаемое значение),bTypes,nColumn,nString);

Если вам нужно пример как эти данные туда заносятся то вот пример:
(заносятся они в 1С , я тащу в свою компонету ..как выражается 1С агрегатный тип данных)
TestArray=CreateObject("ValueTable");
i=0;
in=5; //колонки
while i<=5 do
TestArray.NewColumn();
i=i+1;
enddo;

i=0;
in=5; //строки
while i<15 do
TestArray.NewLine();
i=i+1;
enddo;

TestArray.SetValue(1,1,3);
TestArray.SetValue(1,2,"1.1");
TestArray.SetValue(1,3,"Вертикальная планировка");
TestArray.SetValue(1,4,1262.19);
TestArray.SetValue(1,5,"G");
TestArray.SetValue(1,6,"G");

ну и т.д.
//передаем то что создали в компоненту
//Ggraf.Data=TestArray;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возвращаемое значение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]