Re[7]: Проблема с маршалингом массива BSTR в VB
От: StandAlone  
Дата: 28.07.06 04:32
Оценка:
Здравствуйте, Аноним, Вы писали:

Масса! Джимми иметь задавать глупый вопрос, масса!
А почему Вы не сделали (BSTR*) (Result->parray->pvData)? Ведь белым людям
можно приводить все, что угодно куда угодно!?Невзирая на степень недокументированности
тех или иных полей структтуры — ведь m$ никогда их не меняет(там тоже белые люди)!
1."Неважно, как быстро работает твоя программа, если она не работает."(с)
2.Приведенный мною код — результат двухсуточного чтения MSDN и попыток понять,
что же именно и где в <стандартных> функциях для VARIANT не работает.Понял.
Финальный вариант, оттестированный и работающий с клиентом, как надо :

BSTR HUGEP *pBSTR;
VariantInit(Result);
Result->vt= VT_ARRAY | VT_BSTR; // Вот где собака порылась...
Result->parray=SafeArrayCreateVector(VT_BSTR,0,2);
if(!Result->parray)
{
return E_OUTOFMEMORY;
}
hr = SafeArrayAccessData(Result->parray ,(void HUGEP* FAR*)&pBSTR);
{pBSTR[0]=...}
SafeArrayUnaccessData(Result->parray );
return S_OK;
Не профилировал — IMHO, глупость.
P.S. Не флейма глупого ради, а совета для, ежели кто так же мучаться будет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.