powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Работа с классами
15 сообщений из 15, страница 1 из 1
Работа с классами
    #32857905
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для удаления объекта класса достаточно ли будет
...............................
Set g_oADO = Nothing

объявлен клас так
Public g_oADO As New CADO
----------------------------------
когда вообще идет обращение к методу класса ?
Private Sub Class_Terminate()
----------------------------------
А вообще кто знает есть ли какой-то менеджер объектов мониторинга их в памяти ..под Access....удаления и оптимизация?
...
Рейтинг: 0 / 0
Работа с классами
    #32857921
MLeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про мониторинг объектов не скажу. Set g_oADO = Nothing - просьба удалить объект, access сделает это, когда ему удобно. Для public это единственный способ. Если объект используется в одном модуле, лучше объявить его private.
...
Рейтинг: 0 / 0
Работа с классами
    #32857927
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MLeonПро мониторинг объектов не скажу. Set g_oADO = Nothing - просьба удалить объект, access сделает это, когда ему удобно. Для public это единственный способ. Если объект используется в одном модуле, лучше объявить его private.

g_oADO дело в том в пределах этого класса все работает, .....
если вызвать любой public метод класса как вы рекомендуете , тогда идет обращение к Private Sub Class_Initialize()

Я хочу знать Set g_oADO = Nothing выполняет ли вызов Class_Terminate ???
...
Рейтинг: 0 / 0
Работа с классами
    #32857933
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public g_oADO As New CADO

CADO - это собственно клас.
g_oADO - есть собственно объект-клас
...
Рейтинг: 0 / 0
Работа с классами
    #32857952
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не знаю, будет ли моя реплика к месту, но:

Если описать нечто As New, то потом трудно превратить его в Nothing. Поэтому вместо

Dim X As New Y

лучше писать

Dim X As Y
Set X = New Y
...
Рейтинг: 0 / 0
Работа с классами
    #32857967
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потому, лучше иметь в классе явно вызываемый метод Close, который проведёт очистку приватных переменных. В этом случае запоздалый Terminate вызывает меньше проблем. Это же относится и к стандартным классам, типа Recordset
...
Рейтинг: 0 / 0
Работа с классами
    #32857991
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычНе знаю, будет ли моя реплика к месту, но:

Если описать нечто As New, то потом трудно превратить его в Nothing. Поэтому вместо

Dim X As New Y

лучше писать

Dim X As Y
Set X = New Y

УГУ не догадался проверить .счас попробую
...
Рейтинг: 0 / 0
Работа с классами
    #32857992
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShА потому, лучше иметь в классе явно вызываемый метод Close, который проведёт очистку приватных переменных. В этом случае запоздалый Terminate вызывает меньше проблем. Это же относится и к стандартным классам, типа Recordset

Так как Вы советуете метод Close класса вызовет еще раз Class_Initialize.
...
Рейтинг: 0 / 0
Работа с классами
    #32858000
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакой мистики, обычный юзерский метод Close сделает только то что в нём написано. Инициализация произойдёт после присваивания Nothing и последующего обращения к свойтву/методу. Что тут рассуждать, лучше попробовать самому и посмотреть порядок вызовов
...
Рейтинг: 0 / 0
Работа с классами
    #32858007
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShНикакой мистики, обычный юзерский метод Close сделает только то что в нём написано. Инициализация произойдёт после присваивания Nothing и последующего обращения к свойтву/методу. Что тут рассуждать, лучше попробовать самому и посмотреть порядок вызовов

не фига еще раз проверил........при обращении к методам класса все равно первым вызывается метод Private Sub Class_Initialize

Вот когда срабатывает Class_Terminate так и не удалось ....?
...
Рейтинг: 0 / 0
Работа с классами
    #32858025
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Class_Terminate вызовется при обнулении счётчика ссылок на экземпляр класса.

Dim X As Y
Set X = New Y
X.method .....

Set X=Nothing
вот здесь и вызовется Class_Terminate
...
Рейтинг: 0 / 0
Работа с классами
    #32858528
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShClass_Terminate вызовется при обнулении счётчика ссылок на экземпляр класса.Совершенно верно! Alexey Sh
Dim X As Y
Set X = New Y
X.method .....

Set X=Nothing
вот здесь и вызовется Class_TerminateА вот это - не всегда. Например, если вместо
Код: plaintext
.....
подставить
Код: plaintext
set X2 = X
то Class_Terminate не вызовется
Так что ищите где ещё используется переменная g_oADO
...
Рейтинг: 0 / 0
Работа с классами
    #32860927
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если другой класс создает этот и возвращает его вам в переменную, то nothing этого класса сам класс не уничтожит.

Если класс создал другие классы, то nothing то же не сработает пока не будут уничтожены все вызванные экземпляры; сработает после уничтожения вызванных классов - тогда и будет вызвано событие terminate.
...
Рейтинг: 0 / 0
Работа с классами
    #32861489
Фотография RuslanLisovenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVNЕсли другой класс создает этот и возвращает его вам в переменную, то nothing этого класса сам класс не уничтожит.

Если класс создал другие классы, то nothing то же не сработает пока не будут уничтожены все вызванные экземпляры; сработает после уничтожения вызванных классов - тогда и будет вызвано событие terminate.


Уточните покажите пример плиз.........
...
Рейтинг: 0 / 0
Работа с классами
    #32861675
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukov Alexey ShClass_Terminate вызовется при обнулении счётчика ссылок на экземпляр класса.Совершенно верно! И это весьма логично, если вдуматься, т.к. Class_Initialize также срабатывает ровно один раз при создании экземпляра, а не при создании каждой ссылки на него
:)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Работа с классами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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