Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / передача ссылки на интерфейс в VBScript / 6 сообщений из 6, страница 1 из 1
04.04.2005, 22:12:19
    #32997057
dmJonny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача ссылки на интерфейс в VBScript
Господа, есть такая проблема.
Имеется программа на Delphi c двумя automation-объектами. Первый объект (Obj1) умеест создавать второй объект (Obj2), и передавать наружу ссылку на его интерфейс. Вопрос: как в VBScript можно воспользоваться этой ссылкой, т.е. вызвать метод объекта Obj2?
Т.е. надо чего-то типа
---
Dim Obj1, Obj2
Set Obj1 = CreateObject("MyApp.Object1")
Set Obj2 = Obj1.CreateObject2

MsgBox Obj2.GetMessage
---
В таком коде VBScript упорно не хочет воспринимать Obj2 как объект.
Как можно добиться желаемого эффекта?
...
Рейтинг: 0 / 0
05.04.2005, 12:28:28
    #32997840
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача ссылки на интерфейс в VBScript
1 А ошибка какая ?
2 В скриптовом языке можно "добраться" только до Default интерфейса класса
Scripting Clients and User-defined Interfaces
there's a problem when you have a component that implements user-defined interfaces. Scripting clients can have trouble using the component. The problem is that scripting clients are written in typeless languages . For example, when you're writing VBScript in an ASP page, your variables and parameters are always defined as variants. When you establish a connection to a COM object, you cannot specify which interface you want to use. Instead, a VBScript client is always connected to a COM object through the interface that's marked as the default for the component being instantiated В статье описан и workaround проблемы
...
Рейтинг: 0 / 0
05.04.2005, 18:06:12
    #32998855
dmJonny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача ссылки на интерфейс в VBScript
Alexey Kudinov1 А ошибка какая ?
В вышеприведенном коде - ошибка Object required на "Set Obj2 = Obj1.CreateObject2"
Alexey Kudinov
2 В скриптовом языке можно "добраться" только до Default интерфейса класса
Scripting Clients and User-defined Interfaces
В этой статье рассматриваются не совсем то, что мне нужно - у меня два класса со своими default-интерфейсами, а не один со множеством интерфейсов. Вот только сделать с этой ссылкой я ничего не могу.
...
Рейтинг: 0 / 0
05.04.2005, 18:41:45
    #32998933
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача ссылки на интерфейс в VBScript
dmJonny Alexey Kudinov1 А ошибка какая ?
В вышеприведенном коде - ошибка Object required на "Set Obj2 = Obj1.CreateObject2"
Значит метод CreateObject2 класса MyApp.Object1 не возвращает объект
...
Рейтинг: 0 / 0
06.04.2005, 10:27:49
    #32999612
dmJonny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача ссылки на интерфейс в VBScript
Alexey KudinovЗначит метод CreateObject2 класса MyApp.Object1 не возвращает объект

Это верно, он возвращает ссылку на интерфейс. А CreateObject не то же самое делает? (даже в статье упоминается, возвращаеться ссылка на дефолтный интерфейс)
И каким образом можно в CreateObject2 указать, что возвращается объект? (и сервер (на Delphi), и клиента я пишу сам, так что могу методы эти менять). Насколько я понимаю, нет смысла возвращать какую-то другую сущность, кроме ссылки на интерфейс (например, ссылку на экземпляр нового объекта)?
...
Рейтинг: 0 / 0
06.04.2005, 12:13:24
    #33000065
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача ссылки на интерфейс в VBScript
dmJonny
Это верно, он возвращает ссылку на интерфейс. А CreateObject не то же самое делает? (даже в статье упоминается, возвращаеться ссылка на дефолтный интерфейс)
И каким образом можно в CreateObject2 указать, что возвращается объект? (и сервер (на Delphi), и клиента я пишу сам, так что могу методы эти менять). Насколько я понимаю, нет смысла возвращать какую-то другую сущность, кроме ссылки на интерфейс (например, ссылку на экземпляр нового объекта)?
Есть интерфейсы. Есть классы, они имплементируют интерфейсы. А есть объекты - это экземпляры классов. Default интерфейс - это имя класса.
Поскольку работа всегда (в VB) идет с объектами (экземплярами классов), то и возвращать надо объект. Именно это и делает CreateObject. Он _создает экземпляр объекта_ класса.
Про то каким образом можно в CreateObject2 указать, что возвращается объект лучше спросить в форуме Delphi
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / передача ссылки на интерфейс в VBScript / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]