|
|
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
Есть объект При выполнении его метода он возвращет значение. Если мы знаем тип возвращаемого значения, то все хорошо. double k; BYTE bTypes[1] = { 0 }; drvMain.InvokeHelper(id,DISPATCH_METHOD,VT_R8,(void*)&k,bTypes); Но если неизвестно что он вернет. Как тогда описать тип приемника? Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 19:55 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
это как? ты об RTTI? напиши пример, где тип заранее не известен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 20:22 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
Незнаю .. или я что-то не так объясняю или чего-то недопонимаю.. Мне передают указатель 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 21:13 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32669616&tid=2034491]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 404ms |

| 0 / 0 |
