Re[4]: Как задать тип для out-параметра?
От: Аноним  
Дата: 11.11.02 12:25
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Здравствуйте Аноним, Вы писали:


Vi2>

А>>Это не выход... Зачем мне [in,out] параметры, если он у меня по логике должен быть out, это помоему еще хуже чем использовать в качестве выходного параметра тип Variant. Мне осталось установить чего все нормально работает в Visual Basic, а в VBScript нет!!!
А>>Должно работать!!!

Vi2>Давай по порядку.
Vi2>1. В VBScript нет типизированных переменных (в VB есть).

Согласен!!!

Vi2>2. Вызов функции (или метода) идет через Invoke. Поэтому до лампочки, что ты там напишешь в IDL — in или out,


Несогласен!!! Нужно знать тому же Invoke что является входным параметром, а что выходным...

long или BSTR. VBScript будет передавать VARIANT*.

Действительно идет преобразование, так как Invoke принимает параметры типа Variant, но все эти преобразования делаются независимо от разработчика...


Vi2>3. При вызове call object.Get(CStr(strSessionID), ..., strXMLData, strErrorName) скорее всего передается VARIANT от CStr с VT_BSTR, поэтому обработчик Invoke может распаковать в BSTR. Раз strSessionID — это строка, то передай как есть call object.Get(strSessionID, ..., strXMLData, strErrorName), получишь Ощибку преобразования на первом параметре (для уверенности, сделай один параметр in).


strXMLData, strErrorName у меня должны быть строками, а VBScript передает Variant, поэтому несоответсвие типов, если бы можна было бы указть что это строки, то и проблем бы не было...

Vi2>4. Параметр out нет никакого смысла контролировать, так как, чтобы там не содержалось, это будет переписано на строку. Этим ты и гарантируешь возврат строки.


Возможно, но это нужно знать тому кто эти обьекты юзает, так как он без понятия что кроется за типом Variant....

Vi2>Поэтому делай [out]VARIANT* xmlResultXML, в нем точно будет строка, если ты туда запишешь строку.


Сейчас у меня так и есть, но тогда как я все это делал мне казалось что я делаю неправильно и обязательно переделаю как надо, но не там то было....

Это мне не нравится, потому что в Visual Basic можно все по нормальному сделать, а в скрипте нет!!!

Должен же быть какой то выход, не может же быть все так тупо...

Нахрена тогда вообще эта вся возня с типами, все бы сделали через Variant и все!!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.