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

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

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

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

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


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127414
fedotxxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код сервера
автор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
Использование Collection в COM сервере
    #36127502
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Variant - это вам не Object
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127548
fedotxxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneVariant - это вам не Object Это ты про что? Про "dim container as variant"? Все нормально работает в такой конструкции
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127554
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Function Add(Obj As Variant, key As String) As Variant
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127648
fedotxxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал на авторPublic Function Add(Obj As Object, key As String) As Variant Проблема осталась. Теперь можно передать только объекты (логично), на самописный класс ругается
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127667
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так у вас не выйдет
вам надо свою собственную коллекцию использовать на основе своего универсального класса
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127685
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще нет инициализации коллекции внутри класса переносчика


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Использование Collection в COM сервере
    #36127831
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Использование Collection в COM сервере
    #36127839
fedotxxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упростил функцию, ошибка таже авторPublic Function myAdd(Obj As Variant) As Boolean
MsgBox ("In!")
End Function
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование Collection в COM сервере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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