Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Как передать указатели из JScript в ActiveX компонент   Найти похожие ветки 

 
io   (2004-03-10 15:20) [0]

Проблема в следующем:
есть серверный сценарий на JScript, который создает ActiveX обьект;
в обьекте есть функция, которая имеет несколько параметров в модификаторами out;
Вот код:
<%
 var Admin = Server.CreateObject("WebAdmin.CWebAdmin");
 var CodPub;
 var DocName;
 var PubDate;
 var Remark;
 var DActive;
 var DocId = Request.Form("edDocId");
 Admin.GetDocInfo(DocId, CodPub, DActive, DocName, PubDate, Remark);
%>


Но после вызова процедуры переменные остаются без значения.
Что делать?

Заранее благодарен.


 
Ломброзо ©   (2004-03-10 15:30) [1]

в IDL объявить оные как in/out


 
DiamondShark ©   (2004-03-10 15:31) [2]


> Что делать?

Либо переписать кусок на VBScript, либо сделать параметры GetDocument типа Variant, либо переписать, чтоб возвращался объект:

var di;
di = Admin.GetDocInfo();
DocName := di.docName;
и т.д.

Если изменить класс WebAdmin.CWebAdmin не представляется возможным -- курить бамбук.


 
IGOREK ©   (2004-03-10 16:53) [3]

Привет всем, это был я. Спасибо всем ответившим.
Класс CWebAdmin делаю я, потому и могу изменить.

> Ломброзо ©   (10.03.04 15:30) [1]
> в IDL объявить оные как in/out

Обьект написан на Дельфи. Поставил in/out - ноль ефекта.

На VBScript не переписывал. Пока просто подобавлял отдельные функции на каждое значение - retval нормально работает. Криво конечно, но нету времени пока разбираться.


> var di;
> di = Admin.GetDocInfo();

Это наверно VBScript бо оно ругается на такую конструкцию.


 
DiamondShark ©   (2004-03-10 18:33) [4]


> > var di;
> > di = Admin.GetDocInfo();
>
> Это наверно VBScript бо оно ругается на такую конструкцию.

Подразумевалось, что это JScript.
Метод GetDocInfo должен вернуть объект, это его так переделать надо было.


 
IGOREK ©   (2004-03-11 13:57) [5]


> DiamondShark ©   (10.03.04 18:33) [4]
> Подразумевалось, что это JScript.
> Метод GetDocInfo должен вернуть объект, это его так переделать
> надо было.

А откуда в сценарии известен обьект, его поля? Публиковать в TypeLib?


 
Ломброзо ©   (2004-03-11 14:32) [6]

не мойшет быть ноль эффекта. Вам известна разница меж#ду передачей параметров по ссылке и по значению? in-out - это аналог var. Вполне возможно, что IDE IDL изменила, а модификатор var или out (не помню точно) в паскалевский код не вставила.


 
DiamondShark ©   (2004-03-11 15:44) [7]


> А откуда в сценарии известен обьект, его поля? Публиковать
> в TypeLib?

Как откуда известен? Это ж IDispatch.
Script-engine всегда использует GetIDsOfNames/Invoke.
Публиковать. Или IDispatch вручную реализовывать. Тут на любителя ;-)


> Ломброзо ©   (11.03.04 14:32) [6]

И очень даже мойшет. Если вспомнить, что у жаба-скрипта в принципе отсутствуют атомарные типы, всё -- объекты. А параметры у метода -- типизированные. Поэтому жаба-скрипт передаёт методу не сами ссылки на объекты, а временные переменные.
А вот если бы параметры были не атомарных типов, а variant, то скрипт бы передал туда сами объекты.
Если же тот же самый кусок перепейсать на ВыБыСкрипт, то передались бы переменные по ссылке.


 
Ломброзо ©   (2004-03-11 16:02) [8]

да какие там объекты... в JScript такие же Variantы, что и в VB, в том числе с vt = VT_DISPATCH


 
DiamondShark ©   (2004-03-11 18:09) [9]


> в том числе с vt = VT_DISPATCH

Не "в том числе с...", "а исключительно с..."
Это ж всё руками щупалось... Собственными.

Пишем на VBScript:
Dim a
Dim b
a = 123
b = "halabalavsedela"

То же на JScript:
var a;
var b;
a = 123;
b = "trulalabhaibhai";

В первом случае будем иметь VT_I4 и VT_BSTR, во втором -- только VT_DISPATCH

Я этот случай описывал в комментариях к статье на "Королевстве".


 
Ломброзо ©   (2004-03-11 18:16) [10]

хех... аспасибо, не знал...
Урлъ! :-)

так что же это получается - в JScript все простые типы данных в каких-то внутренних контейнерах (хэшах или там, мапах) ком-объектов хранятся? не ведёт ли сие к прожорливости?


 
DiamondShark ©   (2004-03-11 18:44) [11]

Урль здесь
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=737

Но сомнения взяли... Сечас погонял свой же примерчик (Step6 из архива к статье)...
Блин. Что жаба, что васик -- показывают VT_I4 и VT_BSTR

Получается, что я гоню.


 
DiamondShark ©   (2004-03-11 18:51) [12]

А с другой стороны... почему я так был в этом уверен?
И в комментариях так же сказал... Помню же, что прежде чем писать, пробовал на программе... бр-рр....


 
Ломброзо ©   (2004-03-11 18:59) [13]

похоже, что в кишках у него происходит обычное разруливание вартайпа варианта... Вот код:

var pObj = new Object;
//pObj.test = new Object; - раскомментировать - результат тот же
pObj.test = 10; // показывает цифру
// pObj.test = pObj; // показывает объект
WScript.Echo(pObj.test);

А вообще - движок-то у них один... просто парсеры и всякие там синтаксические анализаторы (или как они там называются) разные...



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.043 c
14-1078833545
PVOzerski
2004-03-09 14:59
2004.04.04
Вот звуковая карточка досталась


14-1078327285
pathfinder
2004-03-03 18:21
2004.04.04
Как удалить файл без возможности его восстановления?


11-1054579325
Clipper
2003-06-02 22:42
2004.04.04
Thread на KOL


14-1078857891
konstantinov
2004-03-09 21:44
2004.04.04
Как дать проекту жизнь?


11-1059559272
Polymorphic
2003-07-30 14:01
2004.04.04
Где взять KOLMath.pas (Нужен для StrGrd)?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский