|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
Привет! В ран-тайме у меня на форме иногда создаются некоторые объекты, ссылки на которые я держу в соотв. поле формы. В этом же ран-тайме мне нужно удалять такие объекты. У меня возник вопрос, если в поле формы на объект хранится фактически единственная существующая ссылка и я присваиваю ей значение .NULL. необходимо ли прежде удалить объект с помощью thisform.RemoveObject() или же достаточно "убить" ссылку? По-идее в сях достаточно заНУЛить, в яве - тоже. вфп9 спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2010, 11:00 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
CTAC-KO, неужели так трудно правктически проверить? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2010, 11:01 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
объект незаметен на форме :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2010, 11:31 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
в принципе созданная из класса форма по заНУЛиванию исчезает. видимо этого достаточно, но я спрашивал т.к. не уверен, мб я чего не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2010, 11:38 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
> Автор: CTAC-KO Пропиши в дестрой вывод лога и проанализируй Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2010, 12:40 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
Если объект создан на форме или любом другом контейнере, просто заNULLить ссылку ничего не дает - он может быть доступен с помощью перебора контролов через FOR EACH. В моем случае, т.е. собственно по сути вопроса, объект обязательно необходимо удалить через .RemoveObject() ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2010, 23:37 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
CTAC-KO, Тут надо понять простую логику. Если у тебя создан к примеру объект типа Microsoft Word, тогда хоть убивай переменную хоть нет - твой объект будет в виндовсе и дальше плавать. Если ты попытаешься запустить форму например proba.scx, а потом присвоишь proba=.NULL. произойдёт примерно то же самое. Твоя форма не закроется, но ссылка на форму потеряется. Дебагер фокспро потеряет ссылку. Иными словами ты сможешь работать с запущенной формой и дальше, но обратиться к ней из другой формы уже не сможешь. Внутри же формы можешь обращаться по ссылкам this или thisform.object... и т.д. как обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2010, 02:55 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
Вообще-то если форма создается через proba=CREATEOBJECT()/NEWOBJECT() то последующее присвоение proba=.NULL. - убивает созданную форму. А если форму запустить через DO FORM, а затем присвоить proba ссылку на эту форму через, например, _SCREEN.Forms(), то через такую ссылку можно будет полноценно управлять формой, но вот последующее присвоение proba=.NULL. - НЕ убивает форму. И первое и второе - абсолютно логично. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2010, 14:31 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
Если любым способом на форме создается любой объект, он становится принадлежащим / доступным этой форме. Поэтому просто убить ссылку на созданный объект - ничего не даст, т.к. через форму к такому объекту все равно мб достучаться, скажем с помощью GETPEM()/PEMSTATUS() о чем я как раз не подумал, задавая этот вопрос. Соотв. такой объект уничтожается только посредством form.RemoveObject() или уничтожением самой формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2010, 14:37 |
|
Скажите - обязательно ли делать RemoveObject если ссылка становится .NULL.
|
|||
---|---|---|---|
#18+
CTAC-KOВообще-то если форма создается через proba=CREATEOBJECT()/NEWOBJECT() то последующее присвоение proba=.NULL. - убивает созданную форму. А если форму запустить через DO FORM, а затем присвоить proba ссылку на эту форму через, например, _SCREEN.Forms(), то через такую ссылку можно будет полноценно управлять формой, но вот последующее присвоение proba=.NULL. - НЕ убивает форму. И первое и второе - абсолютно логично. Оба вывода, как минимум, не точны Код: plaintext 1. 2. 3. 4.
Как видно из примера, убиение одной из ссылок никак не влияет на существование ссылки в другой переменной. Однако по умолчанию, ссылка на форму единственная, поэтому уничтожение (обнуление) переменной приводит к уничтожению формы. Попробуйте запустить Вашу форму таким способом Код: plaintext 1.
Как видно из примера, убиение (обнуление) переменной приводит к уничтожению формы. Однако по умолчанию, опция Linked в команде DO FORM не указывается. Т.е. между переменной и объектом нет жесткой взаимосвязи. Поэтому уничтожение переменной не приводит к уничтожению собственно объекта PS: Не надо придумывать то, чего нет. Существует объект и существует куча ссылок на объект. Если количество ссылок на объект становится равно 0 (не важно, каким способом), то объект автоматически уничтожается. Т.е. Вам всего-лишь надо понять, содержит ли переменная ЕДИНСТВЕННУЮ ссылку на объект? Если "да", то ее обнуление автоматически уничтожит сам объект, если "нет", то ее обнуление не уничтожит объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2010, 19:31 |
|
|
start [/forum/topic.php?fid=41&fpage=92&tid=1585071]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 185ms |
0 / 0 |