Работаю в С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' в Билдер/Билдер — ХД
Здравствуйте, Sash, Вы писали:
S>Но, как значения положить в параметр типа VARIANT*, имея массив типа Variant? Вручную меняю все VARIANT на Variant и тогда все нормально. Но это неудобно. Буду благодарен за помощь.
Все просто и не надо нервничать

У класса TVariant, помимо всего прочего, определен
operator VARIANT*
Ничего не напоминает?

К тому-же, у этого самого TVariant есть метод ChangeType, который по ходу меняет vt. Так что — TVariant в зубы и вперед!
З.Ы. Кстати, к слову: тот-же
operator = у TVariant кюшает практически все...
Здравствуйте, 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);
не проходит ?
Какие могут быть варианты?
Здравствуйте, 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>