Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование Collection в COM сервере / 11 сообщений из 11, страница 1 из 1
05.08.2009, 11:59
    #36127267
fedotxxl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Создали COM сервер, в котором в коллекцию можно положить и взять объекты. Таким образом можно передавать объекты между программами. Проблема в том, что если создать свой класс и попытаться его туда положить выдается ошибка "Object variable not set" (13). Как решить?

Я так понимаю, что мой класс необходимо "зарегистрировать". Как это сделать? Спасибо =)
...
Рейтинг: 0 / 0
05.08.2009, 12:15
    #36127321
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
> Автор: fedotxxl
> Создали COM сервер, в котором в коллекцию можно положить и взять объекты. Таким образом можно передавать объекты
> между программами. Проблема в том, что если создать свой класс и попытаться его туда положить выдается ошибка "Object
> variable not set" (13). Как решить?

без кода, врядли что-то получится.
Так что ошибка в 17 строке

> Я так понимаю, что мой класс необходимо "зарегистрировать". Как это сделать? Спасибо =)

А вот этого совсем не понял, созданный СОМ сервер естесвенно нужно регистрировать. Если он в длл то regsvr32, если в ехе
, то /installserver(кажется так) или ты о чем?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
05.08.2009, 12:38
    #36127414
fedotxxl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Код сервера
авторVERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "ObjCollection"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Public Function Add(Obj As Variant, key As String) As Variant
On Error GoTo ErrAdd
Add = True
Call col.Add(Obj, key)
Exit Function
ErrAdd:
Add = False
End Function
Public Function Item(key As String) As Variant
On Error GoTo ErrItem
Set Item = col.Item(key)
Exit Function
ErrItem:
Set Item = Nothing
End Function
Public Function Remove(key As String) As Variant
On Error GoTo ErrRemove
Remove = True
Call col.Remove(key)
Exit Function
ErrRemove:
Remove = False
End Function
Public Function Count() As Long
On Error GoTo ErrCount
Count = col.Count
Exit Function
ErrCount:
Count = 0
End Function
Public Sub About()
MsgBox "DuChan Object Collection"
End Sub



Как используем автор
Dim db As NotesDatabase
dim container as variant

Set db = ns.currentDatabase

Set container = CreateObject("DCN_Obj.ObjCollection")

Call container.Add(a, "string") Работает. Пояснение - db - класс, который был написан в системе изначально (дело в том, что Visual Basic (достаточно старая его версия) используется как встроенный язык в системе, на нем реализованы изначально некоторые классы).

Если сделать так автор
Class myClass
End Class

dim a as myClass
Set a = new myClass
Set container = CreateObject("DCN_Obj.ObjCollection")

Call container.Add(a, "myClass") Не работает, выдает ошибку
...
Рейтинг: 0 / 0
05.08.2009, 13:00
    #36127502
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Variant - это вам не Object
...
Рейтинг: 0 / 0
05.08.2009, 13:12
    #36127548
fedotxxl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Konst_OneVariant - это вам не Object Это ты про что? Про "dim container as variant"? Все нормально работает в такой конструкции
...
Рейтинг: 0 / 0
05.08.2009, 13:14
    #36127554
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Public Function Add(Obj As Variant, key As String) As Variant
...
Рейтинг: 0 / 0
05.08.2009, 13:45
    #36127648
fedotxxl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Переписал на авторPublic Function Add(Obj As Object, key As String) As Variant Проблема осталась. Теперь можно передать только объекты (логично), на самописный класс ругается
...
Рейтинг: 0 / 0
05.08.2009, 13:50
    #36127667
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
так у вас не выйдет
вам надо свою собственную коллекцию использовать на основе своего универсального класса
...
Рейтинг: 0 / 0
05.08.2009, 13:55
    #36127685
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Еще нет инициализации коллекции внутри класса переносчика


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
05.08.2009, 14:40
    #36127831
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
VERSION  1 . 0  CLASS
BEGIN
MultiUse = - 1  'True
Persistable =  0  'NotPersistable
DataBindingBehavior =  0  'vbNone
DataSourceBehavior =  0  'vbNone
MTSTransactionMode =  0  'NotAnMTSObject
END
Attribute VB_Name = "ObjCollection"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True

Public Function Add(Obj As Variant, key As String) As Variant
On Error GoTo ErrAdd
Add = True
Call col.Add(Obj, key)
Exit Function
ErrAdd:
Add = False
End Function

Public Function Item(key As String) As Variant
On Error GoTo ErrItem
Set Item = col.Item(key)
Exit Function
ErrItem:
Set Item = Nothing
End Function

Public Function Remove(key As String) As Variant
On Error GoTo ErrRemove
Remove = True
Call col.Remove(key)
Exit Function
ErrRemove:
Remove = False
End Function

Public Function Count() As Long
On Error GoTo ErrCount
Count = col.Count
Exit Function
ErrCount:
Count =  0 
End Function

Public Sub About()
MsgBox "DuChan Object Collection"
End Sub
Jah loves you. col даже не объявлено. Option Explicit рулит. Проблема, как мы видим, не в том, что "если создать свой класс"
...
Рейтинг: 0 / 0
05.08.2009, 14:44
    #36127839
fedotxxl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Collection в COM сервере
Упростил функцию, ошибка таже авторPublic Function myAdd(Obj As Variant) As Boolean
MsgBox ("In!")
End Function
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование Collection в COM сервере / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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