Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Dim или локальные переменные, объекты


Автор: klen 27.12.2005, 16:19
В конце процедуры приходиться писать...

Set FSO = Nothing

или

Set var1 = Nothing

Вопрос!

Надо ли это делать. Может быть VB6 сам удалит эти объекты, переменные. По завершению процедуры.
smile

Автор: Akina 27.12.2005, 17:04
дерьмо за собой надо чистить. Обязательно. Если останутся зависшие коннекты к базе - наплачешься...

Автор: cardinal 27.12.2005, 17:30
Цитата(MSDN)
Until it is assigned an object, the declared object variable has the special value Nothing, which indicates that it doesn't refer to any particular instance of an object.

И ничего больше! VB сам удаляет объекты по завершению процедуры (или программы), а Nothing просто говорит о том, что variable doesn't refer to any particular instance of an object.
Добавлено @ 17:31
А причем здесь
Цитата(Akina @ 27.12.2005, 15:04)
зависшие коннекты к базе - наплачешься

и Nothing?

Автор: Akina 27.12.2005, 17:50
Цитата(cardinal @ 27.12.2005, 18:30)
А причем здесь

зависшие коннекты к базе - наплачешься

и Nothing?

в таком контексте - ни при чем... но если не сделать вот этого самого присвоения Nothing - тогда и возможны неприятности. Типа клизьмы от админа, который не смог забэкапить открытую зависшим коннектом базу...

Автор: cardinal 27.12.2005, 20:14
Ну в бд я не силен, поэтому ничего сказать не могу.
klen, посмотри на какие-нибудь примеры в книгах, как народ делает...

Автор: Naghual 28.12.2005, 10:52
Это относится не только к БД!
Если работать с ActiveX EXE или DLL то происходят те же глюки.
Например, если из своего приложения запустить Excel и не присвоить ему в конце работы Nothing, то после закрытия своей проги Excel все еще будет висеть в памяти!
VB уничтожит объект, под которым был Excel запущен но не сам Excel.

Автор: Flotskiy 28.12.2005, 11:49
Приветствую всех! С наступающим Новым Годом!
Много было глюков, если не закроеш БД или Excel. При выходе из проги она виснет в памяти. Сейчас закрываю все, примерно:
Код

dbBibliot.Close
Set dbBibliot = Nothing

С уважением

Автор: cardinal 28.12.2005, 12:44
То есть то, что написано в MSDN это половина правды...

Автор: Akina 28.12.2005, 13:22
Цитата(cardinal @ 28.12.2005, 13:44)
То есть то, что написано в MSDN это половина правды...

Фирма Майкрософт имеет право недоговаривать, ошибаться, нарушать обязательство и не соблюдать стандарты. Это аксиома.

Автор: Mephisto 29.12.2005, 00:57
Некоторым обььекта недостаточно просто сказать Nothing. Их необходимо предварительно умножить на ноль.
А как сказано обьекты выгружать ЖЕЛАТЕЛЬНО. Иногда они все-же остаются в памяти.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)