Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

Экономия ресурсов   Найти похожие ветки 

 
Jimmy   (2006-11-13 19:24) [0]

Моя программа содержит небольшое число форм, но на некоторых из них очень много объектов VCL: button"ы, checkbox"ы и т.п. Соответственно она кушает много ресурсов. Вероятно, если объекты создавать динамически, а не на этапе разработки, то это позволит сэкономить ресурсы. Но вот что понимать под словами "создавать динамически"? Есть два варианта.
1. Создать форму на этапе разработки, поместить на нее нужные объекты, но убрать строку из "dpr"-файла "Application.CreateForm(TFormX, FormX);". А создавать форму динамически, в нужном месте: "FormX:=FormClass.Create(Application);", по мере ненадобности FormX.Free. Это просто, но есть подозрение, что это не приведет к экономии ресурсов.
2. Создать форму на этапе разработки, подключить с помощью "Application.CreateForm(TFormX, FormX);", но VCL-объекты на этой форме создавать динамически, типа Label1:=TLabel.Create, и уничтожать по закрытию формы Label1.Free.
Какой из этих двух вариантов правильный? Заранее спасибо.


 
StriderMan ©   (2006-11-13 19:31) [1]

1. Поможет. зуп на рельсу.

> FormX:=FormClass.Create(Application);",

можно просто .Create(nil)

2. Ерунда. Может размер ехе-шника на пару килобайт сократишь, но не потребляемой памяти.


 
Ketmar ©   (2006-11-13 19:31) [2]

натурально, оба.


 
Loginov Dmitry ©   (2006-11-13 20:48) [3]

Быть может и форму создавать динамически
FormX:=FormClass.Create(Application);

и объекты на форме также создавать динамически
Label1:=TLabel.Create(Self)

а-то фифти-фифти как-то не рульно


 
Kolan ©   (2006-11-13 20:51) [4]

Вариант 3. Наконец сделать нормальный интерфейс и убрать оттуда кучу контролов...


 
Jimmy   (2006-11-13 20:55) [5]

>StriderMan:
Правильно я Вас понял, что первый вариант сэкономит ресурсы, а второй нет?
>Ketmar
оба правильные... Но что приведет к большой экономии? И на сколько?
>Loginov Dmitry
Ваш ответ противоречит с первым.


 
Loginov Dmitry ©   (2006-11-13 21:05) [6]

Для наибольшей экономии ресурсов лучше всего не создавать ни форму, ни компоненты на этой формы. Для автора - это самый оптимальный вариант.


 
Percent   (2006-11-13 22:19) [7]

2 Jimmy

Используй динамическое создание форм. Этого достаточно.

Для автоматического удаления форм при закрытии используй событие OnClose, и возвращай Action = caFree;.

Можно и контролы создавать динамически, но это явно сложнее, чем визуально конструировать форму, и оправдано только во вполне определенных проектах. Кроме того, это изменит, в некоторой степени, логику построения приложений, заложенную Borland; это, конечно, не указ, но начинающим следует придерживаться. Так что, я - тебе - пока - не советую.

2 Kolan ©

Я понимаю, Коля, что лучший интерфейс - это форма с одной-единственной кнопокой с надписью "Сделать всю работу", но такое бывает только в очень простых программах, сказках и анекдотах. Так что совет твой - не совсем уместен.


 
Kolan ©   (2006-11-13 23:01) [8]

> Я понимаю, Коля, что лучший интерфейс - это форма с одной-
> единственной кнопокой с надписью "Сделать всю работу", но
> такое бывает только в очень простых программах, сказках
> и анекдотах. Так что совет твой - не совсем уместен.

Слушай а как тебя звать, то а то так по имени, официально, а я все по нику да по нику.


> но такое бывает только в очень простых программах

То есть твои программы из серии:
http://www.artlebedev.ru/studio/vacancy/ui_designer_2/
?


 
Percent   (2006-11-13 23:13) [9]

Слушай а как тебя звать

Обычно зовут "Эй, ты!"...

http://www.artlebedev.ru/studio/vacancy/ui_designer_2/dialog.gif - это много контролов? Навалены не везде системно, правда, но вполне нормальная формочка.


 
Kolan ©   (2006-11-13 23:15) [10]

> Навалены не везде системно, правда, но вполне нормальная
> формочка.

... Лебедев встал и выбросился в окно :) ROTFLOL


 
Leonid Troyanovsky ©   (2006-11-13 23:19) [11]


> Jimmy   (13.11.06 20:55) [5]

> Ваш ответ противоречит с первым.


Это только кажется.

--
Regards, LVT.


 
Percent   (2006-11-13 23:19) [12]

Лебедев встал и выбросился в окно

Оригинальная операция с окном - "выбрасывание в".
Прикольно.


 
SergP ©   (2006-11-14 01:52) [13]

> [6] Loginov Dmitry ©   (13.11.06 21:05)
> Для наибольшей экономии ресурсов лучше всего не создавать
> ни форму, ни компоненты на этой формы. Для автора - это
> самый оптимальный вариант.


Для наибольшей экономии лучше всего не создавать саму программу... :-)


 
Ketmar ©   (2006-11-14 02:27) [14]

>[8] Kolan(c) 13-Nov-2006, 23:01
>Слушай а как тебя звать, то а то так по имени, официально,
>а я все по нику да по нику.
читать ДМ надо внимательно. даже при твоём присутствии это озвучивалось.


 
ЮЮ ©   (2006-11-14 02:49) [15]


> Соответственно она кушает много ресурсов


Каких? Только DBGrid-ы жрут немерено GDI-ресурсов. За остальными VCL-компонентами такого не наблюдал. Да и то всё это критично для Win9x.



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

Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.044 c
2-1163530347
Youngkoder
2006-11-14 21:52
2006.12.03
ini файлы


2-1163158882
koha
2006-11-10 14:41
2006.12.03
Требуется ваше мнение: Что мешает программе запуститься?


2-1163743805
alex810
2006-11-17 09:10
2006.12.03
StringGrid событие DrawCell


15-1163086909
Ламот
2006-11-09 18:41
2006.12.03
Вопрос по 1С (и, похоже, даже не по программированию)


2-1163146941
Access
2006-11-10 11:22
2006.12.03
События (свойства) ListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский