Re[3]: Как передать массив объектов в виде VARIANT
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 02.04.04 07:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>  // [14] Append loops to the hatch
А>  virtual HRESULT STDMETHODCALLTYPE AppendOuterLoop(VARIANT ObjectArray/*[in]*/) = 0;
А>


А>Делал это следующим образом:


А>
А> Variant VarArr[1];
А> VarArr[0] = (IAcadObject*)Contur; //Contur - объект типа IAcadPolylinePtr (смарт-указатель на полилинию)
А>


Значитца так

Вот как создается массив строк.
Это на студии 7.0. Для Билдера не знаю, как это сделать.

Сейчас не могу, попозже если что, накидаю пример на чистом АПИ.

Вот здес кое что похожее
http://www.rsdn.ru/Forum/Message.aspx?mid=583447#583447
Автор: amOK
Дата: 25.03.04


Вобщем если нужен пример работающий, отпиши сюда или на почту, что в профайле.

STDMETHODIMP CArrayTest::ArrayTest(VARIANT* vararray)
{
    // TODO: Add your implementation code here
    CComSafeArray<BSTR> arr;

    arr.Add(::SysAllocString(L"1"));
    arr.Add(::SysAllocString(L"2"));
    arr.Add(::SysAllocString(L"3"));
    arr.Add(::SysAllocString(L"4"));

    CComVariant ret(arr);

    ret.Detach(vararray);
  
    arr.Detach();
    return S_OK;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.