|
|
|
Про объектные переменные
|
|||
|---|---|---|---|
|
#18+
Здрасте! Посмотрел по топикам "объектные переменные", нашёл 10, вроде, штук топиков с разными ответами. Но надо разбираться ещё и ещё. Хочу для начала спросить: если объектная переменная (Object) или переменная-объект(Word.Application, ADODB.Recordset) описана на уровне процедуры (например, формирую документ Ворда при нажатии кнопочки, описав Аппликашку и сам Док как переменные-объекты, но применяю и другие объекты на уровне процедуры, рекордсеты в основном), то когда процедура завершается, все ли созданные в ней объекты и ссылки на них уничтожаются или обнафигачиваются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 09:49 |
|
||
|
Про объектные переменные
|
|||
|---|---|---|---|
|
#18+
После выхода из процедуры, локальные переменные уничтожаются. Т.е. все ссылк "нафингуются" кроме статических переменных (не путать с сишным static). И если вы ссылку на объект не передали куда-то еще, то объект автоматически уничтожится. Уничтожать объектные переменные объявленные внутри процедур - это лишнее. Объявленные на уровне модуля класса - не помешает (но польза от этотого - лишь борьба с циклической ссылкой). Для Work.Application недостаточно просто ссылки "погасить". Ему надо дать команду выгрузиться. То же самое контролы динамически созданные на форме - будут жить на ней до выгрузки или до команды .Controls.Remove или Unload. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 11:51 |
|
||
|
Про объектные переменные
|
|||
|---|---|---|---|
|
#18+
Worobjoff Дело в том, что после процедуры, документ должен остаться на виду у секретарши, но переменные для его создания я объявляю на уровне процедуры Dim'ом. И ссылок на него никуда не даю. А вот если я объявляю на уровне процедуры рекордсет, который использую лишь пока есть процедура. как она завершилась я его не нафигачиваю, этот рекорд тоже сам уничтожиться? ссылок на него я тоже никому не передаю на более высокий уровень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 11:59 |
|
||
|
Про объектные переменные
|
|||
|---|---|---|---|
|
#18+
Ден ПрограммёрА вот если я объявляю на уровне процедуры рекордсет, который использую лишь пока есть процедура. как она завершилась я его не нафигачиваю, этот рекорд тоже сам уничтожиться? ссылок на него я тоже никому не передаю на более высокий уровеньДа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 12:19 |
|
||
|
Про объектные переменные
|
|||
|---|---|---|---|
|
#18+
Worobjoff Ден ПрограммёрА вот если я объявляю на уровне процедуры рекордсет, который использую лишь пока есть процедура. как она завершилась я его не нафигачиваю, этот рекорд тоже сам уничтожиться? ссылок на него я тоже никому не передаю на более высокий уровеньДа. Итак, если даже объект описан на уровне процедуры, но на него дали ссылку на переменную глобального уровня, т.е. уровня модуля формы или класса, то при выходе из процедуры он не уничтожается, если не объявили чтобы он пошёл нафиг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 12:22 |
|
||
|
Про объектные переменные
|
|||
|---|---|---|---|
|
#18+
Ден ПрограммёрИтак, если даже объект описан на уровне процедуры, но на него дали ссылку на переменную глобального уровня, т.е. уровня модуля формы или класса, то при выходе из процедуры он не уничтожается, если не объявили чтобы он пошёл нафигЗдесь посылают нафиг ссылку а не объект. Объект уничтожает сборщик мусора, но не ваш код. Про подсчет ссылок слышали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 12:27 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=228&tid=2163788]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 350ms |

| 0 / 0 |
