Dynamically created forms VS Components
9 отговора
303 прегледа
Dynamically created forms VS Components
Hi! Правило ли ви е впечатление какво се случва с паметта, когато се стартира OpenDialog или SaveDialog от форма (може да се види примерно в TaskManager)? При мен използваната памет скача с около 6000K (!!!) и след затваряне на диалога не спада... Пробвах същото с Corel - пак така.
За себе си отдавна съм възприел подхода да създавам модалните диалози динамично (Create) и да ги затривам (Free) след употреба (не са в списъка auto-create forms на проекта). Ама за стандартните компоненти ми се вижда тъпо да ползвам този подход - нали за това уж е тоя VCL...
Вие какво правите по въпроса?
За себе си отдавна съм възприел подхода да създавам модалните диалози динамично (Create) и да ги затривам (Free) след употреба (не са в списъка auto-create forms на проекта). Ама за стандартните компоненти ми се вижда тъпо да ползвам този подход - нали за това уж е тоя VCL...
Вие какво правите по въпроса?
Re: Dynamically created forms VS Components
Ne sam mnogo zapoznat no dokolkoto znam ideiata na Collectora e da ne se osvobojdava pamet dokato ne potribva nova svobodna takava, zashtoto
ako pak otvorish dialoga toii ve4e si ima "miasto" i se uveli4ava skorosta za izpalnenie po NewObject.Create()...
Ne pretendiram za kompetentnost ,prosto niakade sam go 4el i mi e ostanal takav spomen...
ako pak otvorish dialoga toii ve4e si ima "miasto" i se uveli4ava skorosta za izpalnenie po NewObject.Create()...
Ne pretendiram za kompetentnost ,prosto niakade sam go 4el i mi e ostanal takav spomen...
Re: Dynamically created forms VS Components
Има смисъл да е така, но не съм срещал нищо по въпроса - ще поровя, може (и дано) да да се окажеш прав :-)
Re: Dynamically created forms VS Components
И моя подход е същия: правя си формите динамично с Create и Free.
Специално OpenDialog-а се менажира Windows-ките библиотеки, затова и при Corel е същото.
А memory manager-a на Delph-то има навика да взима памет без да я освобождава. На това му казват "плато", т.е. в началото бързо достигна някакъв максимум и после бавно нараства.
Един голям хищник на тема памет е ReAllocMem, btw.
Специално OpenDialog-а се менажира Windows-ките библиотеки, затова и при Corel е същото.
А memory manager-a на Delph-то има навика да взима памет без да я освобождава. На това му казват "плато", т.е. в началото бързо достигна някакъв максимум и после бавно нараства.
Един голям хищник на тема памет е ReAllocMem, btw.
Re: Dynamically created forms VS Components
Ми тва е много досадно :-((( Сега човъркам от любопитство и наблюдавам следните неща:
1. Пускам гола форма с един ListBox, в който има 3 елемента. След всяко цъкане в него заетата памет се увеличава с 1-2K - за кво?
2. Веднага след отварянето на формата заетата памет е с пъти повече от размера EXE-то...
1. Пускам гола форма с един ListBox, в който има 3 елемента. След всяко цъкане в него заетата памет се увеличава с 1-2K - за кво?
2. Веднага след отварянето на формата заетата памет е с пъти повече от размера EXE-то...
VCL
Ne sam go kazwal no pak sha go poftorq - naj golemiq problem na delfito e VCL-a toj si praj koto si iska a ne kakwoto mu kazwat. Inache po waprosa za pametta - taka e i ne samo s komponentite kadeto e wazmojno izbqgwaj da polzwash VCL i problema shte se minimizira.
BTW proveri za alternatiwni memorymanageri na sajta na borland - sekciq comuniti ili klkto i wikat sega - tam ima/she edin Multithreadet memory manager deto dawa dobri rezultati.
Za ostanaloto ne se trewoji - delfito skoro nqma da nawleze w poleto na EmbededSystems a za sicki ostanali friwolno dopuskaj che 10 Megs Ram ne sa problem :))
------------------------------
I got a COMPILER, and I'm not afraid to use it!
BTW proveri za alternatiwni memorymanageri na sajta na borland - sekciq comuniti ili klkto i wikat sega - tam ima/she edin Multithreadet memory manager deto dawa dobri rezultati.
Za ostanaloto ne se trewoji - delfito skoro nqma da nawleze w poleto na EmbededSystems a za sicki ostanali friwolno dopuskaj che 10 Megs Ram ne sa problem :))
------------------------------
I got a COMPILER, and I'm not afraid to use it!
Re: VCL
В рамките на шегата и с възможно най-малки букви бих попитал: Че кво остава от Delphi, като му махнеш VCL-а? Само познатата begin-end конструкция... само като си помисля колко време от безценния си живот прекарвам напоследък в писане на begin-end вместо {}
:-)))
:-)))
Re: Dynamically created... правилния отговор
според мен се крие в използването на Shell32.dll - погледни колко му е размера - и след това ще разбереш къде е проблема... ;-)))
Познал ли съм - проблема на тези "стандартни" диалогови кутии - е 4е използват "стандартните" win контроли - и паметта се "губи" там!!!
Начина по който измерваш паметта не е много точен - виж какво се случва след затварянето на приложението - ако искаш да освободиш обаче паметта - има функция която "изхвърля" неизпозлваните библиотеки
---
Е т'ва е живот!
Познал ли съм - проблема на тези "стандартни" диалогови кутии - е 4е използват "стандартните" win контроли - и паметта се "губи" там!!!
Начина по който измерваш паметта не е много точен - виж какво се случва след затварянето на приложението - ако искаш да освободиш обаче паметта - има функция която "изхвърля" неизпозлваните библиотеки
---
Е т'ва е живот!
Re: VCL
Ами доста остава - това че ти си се ограничил до цъкането по бутоните и използването на стандартни VCL - компонети - това е твой проблем - а мисля че писането на begin ... end е най-малкия проблем - не и със съществуващите code completition експерти
А ако искаш да оползотвориш безценния си живот - занимавай се с чисто OOП - без значение на езика - ако искаш си напиши компилатор/транслатор който да задоволява небходимостите ти от по прецизно използване на безценното ти време



---
Е т'ва е живот!
А ако искаш да оползотвориш безценния си живот - занимавай се с чисто OOП - без значение на езика - ако искаш си напиши компилатор/транслатор който да задоволява небходимостите ти от по прецизно използване на безценното ти време
---
Е т'ва е живот!