Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

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

 
Trible   (2006-12-23 22:31) [0]

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

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


 
ANTPro ©   (2006-12-23 22:38) [1]

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

: )


 
MTsv DN ©   (2006-12-23 23:07) [2]

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

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

http://delphimaster.net/view/11-1163643952/ - здесь посмотрите. Использовать элементарно...


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

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


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

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

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


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

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


 
ANTPro ©   (2006-12-24 17:40) [6]

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

Вот-вот.

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

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

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


 
Trible   (2006-12-24 18:12) [7]

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

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


 
ANTPro ©   (2006-12-24 18:36) [8]

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

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


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

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


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

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


 
ANTPro ©   (2006-12-24 20:49) [10]

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

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


 
ANTPro ©   (2006-12-24 21:15) [11]

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

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


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

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

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

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


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


 
Galkov ©   (2006-12-25 14:40) [13]

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


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

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


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

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


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

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


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

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


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

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

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


 
SergeR ©   (2006-12-26 16:35) [19]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
4-1172489276
MEV
2007-02-26 14:27
2007.08.12
дамп памяти процесса


2-1184580673
httpbeginer
2007-07-16 14:11
2007.08.12
создание строки HTTP запроса


2-1184835818
pathfinder
2007-07-19 13:03
2007.08.12
Переделка компонентов..


15-1184110473
Bad_B
2007-07-11 03:34
2007.08.12
Нетрадиционное чтение))))


11-1167918954
First
2007-01-04 16:55
2007.08.12
Уничтожение таймера в OnTimer.