powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
11 сообщений из 11, страница 1 из 1
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36756036
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
В ран-тайме у меня на форме иногда создаются некоторые объекты, ссылки на которые я держу в соотв. поле формы. В этом же ран-тайме мне нужно удалять такие объекты.
У меня возник вопрос, если в поле формы на объект хранится фактически единственная существующая ссылка и я присваиваю ей значение .NULL. необходимо ли прежде удалить объект с помощью thisform.RemoveObject() или же достаточно "убить" ссылку? По-идее в сях достаточно заНУЛить, в яве - тоже.

вфп9

спасибо!
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36756038
CTAC-KO,
неужели так трудно правктически проверить?
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36756107
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объект незаметен на форме :)
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36756125
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе созданная из класса форма по заНУЛиванию исчезает. видимо этого достаточно, но я спрашивал т.к. не уверен, мб я чего не знаю.
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36756289
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: CTAC-KO

Пропиши в дестрой вывод лога и проанализируй

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36767426
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если объект создан на форме или любом другом контейнере, просто заNULLить ссылку ничего не дает - он может быть доступен с помощью перебора контролов через FOR EACH. В моем случае, т.е. собственно по сути вопроса, объект обязательно необходимо удалить через .RemoveObject()
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36767514
FoxSoftware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CTAC-KO,

Тут надо понять простую логику.
Если у тебя создан к примеру объект типа Microsoft Word,
тогда хоть убивай переменную хоть нет - твой объект будет в виндовсе и дальше плавать.
Если ты попытаешься запустить форму например proba.scx, а потом присвоишь proba=.NULL.
произойдёт примерно то же самое.
Твоя форма не закроется, но ссылка на форму потеряется. Дебагер фокспро потеряет ссылку.
Иными словами ты сможешь работать с запущенной формой и дальше, но обратиться к ней из другой формы уже не сможешь. Внутри же формы можешь обращаться по ссылкам this или thisform.object... и т.д. как обычно.
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36770014
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то если форма создается через proba=CREATEOBJECT()/NEWOBJECT() то последующее присвоение proba=.NULL. - убивает созданную форму.
А если форму запустить через DO FORM, а затем присвоить proba ссылку на эту форму через, например, _SCREEN.Forms(), то через такую ссылку можно будет полноценно управлять формой, но вот последующее присвоение proba=.NULL. - НЕ убивает форму.
И первое и второе - абсолютно логично.
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36770019
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если любым способом на форме создается любой объект, он становится принадлежащим / доступным этой форме. Поэтому просто убить ссылку на созданный объект - ничего не даст, т.к. через форму к такому объекту все равно мб достучаться, скажем с помощью GETPEM()/PEMSTATUS() о чем я как раз не подумал, задавая этот вопрос. Соотв. такой объект уничтожается только посредством form.RemoveObject() или уничтожением самой формы.
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36770194
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOВообще-то если форма создается через proba=CREATEOBJECT()/NEWOBJECT() то последующее присвоение proba=.NULL. - убивает созданную форму.
А если форму запустить через DO FORM, а затем присвоить proba ссылку на эту форму через, например, _SCREEN.Forms(), то через такую ссылку можно будет полноценно управлять формой, но вот последующее присвоение proba=.NULL. - НЕ убивает форму.
И первое и второе - абсолютно логично.
Оба вывода, как минимум, не точны

Код: plaintext
1.
2.
3.
4.
proba = CreateObject('form')
oForm = proba
proba = null
oForm.Show( 1 )

Как видно из примера, убиение одной из ссылок никак не влияет на существование ссылки в другой переменной. Однако по умолчанию, ссылка на форму единственная, поэтому уничтожение (обнуление) переменной приводит к уничтожению формы.

Попробуйте запустить Вашу форму таким способом

Код: plaintext
1.
DO FORM MyForm.SCX NAME proba Linked
proba = null

Как видно из примера, убиение (обнуление) переменной приводит к уничтожению формы. Однако по умолчанию, опция Linked в команде DO FORM не указывается. Т.е. между переменной и объектом нет жесткой взаимосвязи. Поэтому уничтожение переменной не приводит к уничтожению собственно объекта

PS: Не надо придумывать то, чего нет. Существует объект и существует куча ссылок на объект. Если количество ссылок на объект становится равно 0 (не важно, каким способом), то объект автоматически уничтожается.

Т.е. Вам всего-лишь надо понять, содержит ли переменная ЕДИНСТВЕННУЮ ссылку на объект? Если "да", то ее обнуление автоматически уничтожит сам объект, если "нет", то ее обнуление не уничтожит объект.
...
Рейтинг: 0 / 0
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
    #36770217
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoWord=.NULL.
RELEASE LoWord
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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