Здравствуйте 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 и все!!!!