|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.06.2008, 18:45 | #1 |
Форумчанин
Регистрация: 27.01.2007
Сообщений: 293
|
Динамичесое создание объекта
объект.Create(owner) ?
объект.Create(nil) ? объект.Create(handle) ? |
29.06.2008, 18:49 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
|
29.06.2008, 19:21 | #3 |
Форумчанин
Регистрация: 27.01.2007
Сообщений: 293
|
у меня был pagecontrol было owner. на первой странице я давил батн и создавалась еще одна страница и на ней кнопка с для удаления этой страницы. Все работало. а активной вкалдкой становилась последняя. Но когда было много вкалдоки я давил удалить удалить на последней стрнице, то вылетало ругательство delphi.
|
29.06.2008, 19:50 | #4 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Из OnClick вызывается метод удаления, который вызывает страницу, кнопку и управление возвращается в метод OnClick (уже удаленной кнопки). Если я правильно понял Ваше сообщение, то в этом и проблема. Попробуйте отправлять ссобщение форме - пусть она освобождает страницу. Вот простенький пример: Код:
|
|
29.06.2008, 19:57 | #5 |
Форумчанин
Регистрация: 27.01.2007
Сообщений: 293
|
да удалялась страница с этой так же созданной кнопкой. Все работало. Но когда страниц больше десятка и начинал удалять... delphi ругался иногда
|
29.06.2008, 20:04 | #6 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Когда управление вернулось в метод удаленного объекта все может пройти нормально, т.к. менеджер памяти не сразу использует только что освобожденную память и все данные объекта еще на месте и ими можно пользоваться еще некоторое время. А может не пройти - это как повезет. Лучше не рисковать и не вызывать метод free (прямо или косвенно) из методов самого объекта.
|
29.06.2008, 20:19 | #7 |
Форумчанин
Регистрация: 27.01.2007
Сообщений: 293
|
а я destoy писал, а онпка сама удалялась
|
29.06.2008, 20:52 | #8 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Free вызывает Destroy, но после проверки на nil, во избежание ошибки. Free использовать предпочтительно.
Скорее всего ошибка из за неполного освобождения памяти. Присваивай кнопке nil, после вызова Free. Free убирает объект с формы, но не освобождает полностью память, бывают ошибки обращения к памяти, сам с таким сталкивался. p.s. Это в общем, учитывая что методы вызываются оттуда, откуда надо.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 29.06.2008 в 20:56. |
29.06.2008, 23:01 | #9 |
Форумчанин
Регистрация: 27.01.2007
Сообщений: 293
|
я там что то типа масива изобретал, по нажатию на кнопку прибавлял + 1 новое имя и name... а видимо когда удалял, в памяти оставались старые данные и application читал их от туда...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое создание объекта | ANGa | Помощь студентам | 3 | 10.04.2008 18:14 |
Динамическое создание объекта | Fruit | Общие вопросы Delphi | 5 | 24.01.2008 11:00 |
Динамическое создание объекта | Fruit | Общие вопросы Delphi | 2 | 16.01.2008 21:18 |
Динамичесое создание WebBrowser | LeoN | Компоненты Delphi | 8 | 01.12.2007 14:40 |
Свойства объекта | KBak | Win Api | 5 | 15.08.2007 20:21 |