Variant?
От: Irisha  
Дата: 25.07.01 05:34
Оценка:
Привет всем!
В моем Com объекте предполагается работа с вектором. Что мне нужно использовать в качестве входного параметра в методе? Если Variant, то как его преобразовать к vectorу.
Может я чего-то не понимаю...
Помогите плз.
Re: Variant?
От: Sphinx http://sphinx.on.to
Дата: 25.07.01 12:18
Оценка:
Здравствуйте Irisha, вы писали:

I>Привет всем!

I>В моем Com объекте предполагается работа с вектором. Что мне нужно использовать в качестве входного параметра в методе? Если Variant, то как его преобразовать к vectorу.
I>Может я чего-то не понимаю...
I>Помогите плз.

Не совсем понятен вопрос.
Имеется в виду std::vector из STL?
Sphinx
Re[2]: Variant?
От: Irisha  
Дата: 25.07.01 12:36
Оценка:
Здравствуйте Sphinx, вы писали:


S>Не совсем понятен вопрос.

S>Имеется в виду std::vector из STL?
S>Sphinx

Да, именно это.
Re[3]: Variant?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.07.01 19:20
Оценка:
Здравствуйте Irisha, вы писали:

I>Здравствуйте Sphinx, вы писали:



S>>Не совсем понятен вопрос.

S>>Имеется в виду std::vector из STL?
S>>Sphinx

I>Да, именно это.


Без копирования ни как.

STL тут вам не поможет. Изучите MSDN на предмет SafeArray-я.
В нашей библиотеке есть хелпер для него, но сайт лежит а все в отпусках. :(
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Variant?
От: Sphinx http://sphinx.on.to
Дата: 26.07.01 14:14
Оценка:
Здравствуйте VladD2, вы писали:

VD>Здравствуйте Irisha, вы писали:


I>>Здравствуйте Sphinx, вы писали:



S>>>Не совсем понятен вопрос.

S>>>Имеется в виду std::vector из STL?
S>>>Sphinx

I>>Да, именно это.


VD>Без копирования ни как.


VD>STL тут вам не поможет. Изучите MSDN на предмет SafeArray-я.

VD>В нашей библиотеке есть хелпер для него, но сайт лежит а все в отпусках. :(

Или можно через CComBSTR -- он, вроде, попроще.
Sphinx
Re[5]: Variant?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.07.01 17:23
Оценка:
Здравствуйте Sphinx, вы писали:

S>Или можно через CComBSTR -- он, вроде, попроще.


Ну, CComBSTR сдесь вообще не причем. Этож просто хелпер, а BSTR это и есть кривое программирование вызванное погоней за простатой.

Вот код:
// -------------------------------------

SAFEARRAY * psa = ::SafeArrayCreateVector(VT_I4, 0, 10);
// psa == NULL -> ВинДос зажал память.

int * pMyArray = NULL;
HRESULT hr = SafeArrayAccessData(psa, (void**)&pMyArray);
if(SUCCEEDED(hr))
{
for(int I = 0; I < 10; I++)
{
pMyArray[i] = I * 10;
}
::SafeArrayUnaccessData(psa);
}

// -------------------------------------

Что тут сложного?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.