VARIANT*
От: Sash  
Дата: 12.02.03 15:21
Оценка:
Работаю в СBilder6. Хочу передать массив чисел в Automation Object и получить массив чисел обратно. При создании Automation Object автоматически параметры имеют типы VARIANT и VARIANT*. Из массива VARIANT я получаю значения, приведя его тип к Variant и пользуясь методами этого типа.
Но, как значения положить в параметр типа VARIANT*, имея массив типа Variant? Вручную меняю все VARIANT на Variant и тогда все нормально. Но это неудобно. Буду благодарен за помощь.

13.02.03 09:09: Перенесено модератором из 'C/C++' в COM/DCOM — ХД
13.02.03 11:40: Перенесено модератором из 'COM/DCOM/ActiveX' в Билдер/Билдер — ХД
Re: VARIANT*
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.02.03 23:25
Оценка:
Здравствуйте, Sash, Вы писали:


S>Но, как значения положить в параметр типа VARIANT*, имея массив типа Variant? Вручную меняю все VARIANT на Variant и тогда все нормально. Но это неудобно. Буду благодарен за помощь.


Все просто и не надо нервничать У класса TVariant, помимо всего прочего, определен


operator VARIANT*


Ничего не напоминает? К тому-же, у этого самого TVariant есть метод ChangeType, который по ходу меняет vt. Так что — TVariant в зубы и вперед!

З.Ы. Кстати, к слову: тот-же operator = у TVariant кюшает практически все...
Re[2]: VARIANT*
От: Sash  
Дата: 14.02.03 08:31
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, Sash, Вы писали:


F>

S>>Но, как значения положить в параметр типа VARIANT*, имея массив типа Variant? Вручную меняю все VARIANT на Variant и тогда все нормально. Но это неудобно. Буду благодарен за помощь.

F>Все просто и не надо нервничать У класса TVariant, помимо всего прочего, определен


F>

F>
F>operator VARIANT*
F>


F>Ничего не напоминает? К тому-же, у этого самого TVariant есть метод ChangeType, который по ходу меняет vt. Так что — TVariant в зубы и вперед!


F>З.Ы. Кстати, к слову: тот-же operator = у TVariant кюшает практически все...

F>
<Большое спасибо за помощь. Сделал я так:

STDMETHODIMP TmakeImpl::getVar(VARIANT Energy, VARIANT* Result)
{
  TVariant EnergyPtr(Energy);

  TVariant ResultPtr;
  ResultPtr.operator =(Result);
  Variant vResult = (Variant) ResultPtr;
  vResult.PutElement(1., 0);  vResult.PutElement(3., 2);
}


Клиент получает значения из Result. Но почему замена


  TVariant ResultPtr;
  ResultPtr.operator =(Result);



на TVariant ResultPtr(Result);
не проходит ?
Какие могут быть варианты?
Re[2]: VARIANT*
От: Sash  
Дата: 14.02.03 08:34
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, Sash, Вы писали:


F>

S>>Но, как значения положить в параметр типа VARIANT*, имея массив типа Variant? Вручную меняю все VARIANT на Variant и тогда все нормально. Но это неудобно. Буду благодарен за помощь.

F>Все просто и не надо нервничать У класса TVariant, помимо всего прочего, определен


F>

F>
F>operator VARIANT*
F>


F>Ничего не напоминает? К тому-же, у этого самого TVariant есть метод ChangeType, который по ходу меняет vt. Так что — TVariant в зубы и вперед!


F>З.Ы. Кстати, к слову: тот-же operator = у TVariant кюшает практически все...

F>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.