Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как уничтожить форму с компонентами


Trible ©   (2006-12-23 22:31:00) 

Есть две формы с какими-либо компонентами.
Вторую  форму создаем и унчтожаем руками.
Но при уничтожении остаеться не освобожденная память (MemProof).
Как УНИЧТОЖИТЬ форму с ее компонентами.. ?

Освобождаю как обычно - Form2.Form.free.
Только не говорите про Add2Autofree, это ж придеться к каждому компоненту
руками писать... У меня их там многовато...


Trible   (2006-12-26 17:37:00) [1]

Я в курсе. Стоит 49 - ая.


SergeR   (2006-12-26 16:35:00) [2]

Утечка была TObj.Final в asm версии. В 2.49 это исправлено. :\
В GRush`е тоже была утечка, тоже недавно исправлено.


Trible   (2006-12-26 13:53:00) [3]

MemProof часто показывает утечку, когда ее на деле нет.

Вы отвечаете за свои слова? Доказать сможете?


vampir_infernal   (2006-12-26 06:46:00) [4]

MemProof часто показывает утечку, когда ее на деле нет. На 100% верить ему я бы не стал.


Trible   (2006-12-26 00:11:00) [5]

Почему тогда memproof показывает утечку? А если форму повторно окрыть не уничтожая, то утечки нет.


Vladimir Kladov   (2006-12-25 17:05:00) [6]

В SetParent добавляется. Все контролы создаются с родителем через _NewWindowed. В том числе и GRush и любые другие дополнительные. При добавлении не проверяется, что уже есть в списке, и добавляется повторно. Соответственно, на выходе будет повторно уничтожить уже уничтоженный объект.


Trible   (2006-12-25 15:42:00) [7]

Ну эт верно, просто все кричат что Add2Autofree - решение всех проблем.
На форме из компонентов лежит Grush кнопка. При закрытии AV :(


Galkov   (2006-12-25 14:40:00) [8]

Логичнее выглядело бы добавление того, кого создал, ИМХО


Trible   (2006-12-25 14:14:00) [9]

Народы объясните мне причину. Т.к. я в основном использую Grush компоненты, я в mck добавил add2autofree - чтобы само генерилось..

В итоге в inc файле генериться нужная ведь вида :

Result.GRushPanel1  :=  PGRushControl( NewGRushPanel(Result.Form).SetAlign ( caClient ) );
Result.GRushPanel1.Add2AutoFree(Result);


Но теперь при уничтожении (закрытии) любой формы вылетает AV блин. В чем дело???


ANTPro   (2006-12-24 21:15:00) [10]

> [9] Vladimir Kladov   (24.12.06 20:25)

Теперь понял...


ANTPro   (2006-12-24 20:49:00) [11]

> [9] Vladimir Kladov   (24.12.06 20:25)
> э э!

: )
Единственная строка с Add2AutoFree [MCK2.49,KOL2.48] в Unit1_1.inc :
Result.Form.Add2AutoFree( Result );


Vladimir Kladov   (2006-12-24 20:25:00) [12]

э э! Визуальные контролы сами добавляются, когда создаются.


ANTPro   (2006-12-24 18:36:00) [13]

> [7] Trible   (24.12.06 18:12)
> Что то я в inc файле этого не заметил

Кстати да, Add2Autofree не для всех контроллов... что-то изменилось...


> [7] Trible   (24.12.06 18:12)
> memproof тоже.

Не юзал этого зверя пока еще...
А Add2Autofree только добавляет объект в список, так что memproof на нее ругатся не должен...


Trible   (2006-12-24 18:12:00) [14]

Если конторллы создаются MCK, то Add2Autofree добавится само...

Да неужели?  Что то я в inc файле этого не заметил, да и  memproof тоже.


ANTPro   (2006-12-24 17:40:00) [15]

> [5] Trible   (24.12.06 00:19)
> Самое удобное в этом случае.

Вот-вот.

> [3] Trible   (24.12.06 00:15)
> Допустим у вас много форм и на каждой форме по 20 компонентов.
> А?

Если конторллы создаются MCK, то Add2Autofree добавится само...

Если вручную то, возможно имеет смысл сделать массив контролов (с ним и работать проще):
CtrlInForm: array ofPControl;


Trible   (2006-12-24 00:19:00) [16]

Хотя за решение спасибо. Самое удобное в этом случае.


Trible   (2006-12-24 00:18:00) [17]

Я на форуме уже пару раз сканер компонентов выкладывал, все автоматом и установится :)

Inc файл разных форм обновляеться время от времени... Так что задолбаешся каждый раз этот сканер включать.


Trible   (2006-12-24 00:15:00) [18]

Вощем нет стандартного средства. Нужно опять мудрить...
ANTPro так улыбнулся, я уж обрадовался, думал есть классное решение, которое все знают, а я нет.. А может ANTPro знает, но не хочет говорить??
ANTPro, как вы бы сделали в этом случае?
Допустим у вас много форм и на каждой форме по 20 компонентов. А?


MTsv DN   (2006-12-23 23:07:00) [19]

> Только не говорите про Add2Autofree, это ж придеться к каждому
> компоненту
> руками писать...

А зачем руками-то??? Я на форуме уже пару раз сканер компонентов выкладывал, все автоматом и установится :)

http://delphimaster.ru/cgi-bin/forum.pl?id=1163643952&n=10- здесь посмотрите. Использовать элементарно...


ANTPro   (2006-12-23 22:38:00) [20]

> [0] Trible   (23.12.06 22:31)
> Только не говорите про Add2Autofree, это ж придеться к каждому
> компоненту
> руками писать...

: )


Наверх

Титульная страница Поиск, карта сайта Написать письмо