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

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

Много ли ресурсов потребляет невидимая форма? [Delphi, Windows]


<> ©   (2008-04-19 12:06:00) 

В программе главная форма создаётся автоматически, что бы её убрать используется Form.Hide. Имеет ли смысл переделать программу так, что бы когда нужно форма создавалась, а когда она не нужна - уничтожалась? Сэкономит ли это системные ресурсы?


<>   (2008-04-20 11:35:00) [1]

Спасибо!


Vladimir Kladov   (2008-04-20 08:10:00) [2]

Форму имеет смысл уничтожать только в случае, если её первичная настройка при показе, в начале диалога, настолько запутанная, что проще её пересоздать, чем учесть все хвосты от предыдущего состояния. Такое бывает, если внешний вид формы зависит от операции/функции, для которой она вызвана, а функций этих не меньше десятка (или хотя бы 5). В плане потребления ресурсов - это бессмысленно, если у вас не более 1000 разных форм. Не работающий код просто ляжет на своп, ограничения по ресурсам user/kernel/gdi (окна, дескрипторы таймеров, картинок и т.п.) в NT практически отсутствуют, в довольно широких пределах.


<>   (2008-04-19 23:36:00) [3]

>Позвольте поинтересоваться, с каких "позиций" Вас интересует потребление ресурсов, как я понял из поста системных? У Вас какой компьютер (конфигурация), и в чем основная проблема?

Конфигурация - D-800/128MB RAM/20GB HDD.

Меня это интересует пока теоретически, но если разница в потреблении ресурсов будет велика-то и практически.


Ёжик   (2008-04-19 22:50:00) [4]

Позвольте поинтересоваться, с каких "позиций" Вас интересует потребление ресурсов, как я понял из поста системных? У Вас какой компьютер (конфигурация), и в чем основная проблема?


<>   (2008-04-19 22:38:00) [5]

>А где тут динамическое создание формы?

Вот здесь:


begin
Form1:=NewForm(Applet, 'Form1');
Form1.Height:=100;
Form1.Width:=100;
B1:=NewButton(Form1,'b1');
B1.Top:=20;
B1.Left:=20;
B1.OnClick:=TOnEvent(MakeMethod( nil, @Cl ) );
Form1.caption:='fff';
Run(Form1);


Дмитрий К   (2008-04-19 22:26:00) [6]


> <>   (19.04.08 21:30) [2]

А где тут динамическое создание формы?


&lt;&gt;   (2008-04-19 21:30:00) [7]

>При уничтожении главной формы завершится приложение.

Нет, я имел ввиду динамическое создание формы в dpr файле, что бы приложение работало в фоне, и при необходимости форма создавалась\уничтожалась, примерно так:

program Project1;
uses   Windows,   Messages, kol;

var  Form1:pControl; B1:pControl;

Procedure cl( Sender: PObj ) ;
begin
 beep(500,500);
end;

var   Wc: TWndClassEx;
     Msg: TMsg;

function WndProc( wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): lResult; stdcall;
begin

if Msg = WM_DESTROY
 then
  begin
   PostQuitMessage( 0 );
   Result:= 0;
  end
 else
   Result:= DefWindowProc(wnd, Msg, wParam, lParam);

end;

begin
Form1:=NewForm(Applet, 'Form1');
Form1.Height:=100;
Form1.Width:=100;
B1:=NewButton(Form1,'b1');
B1.Top:=20;
B1.Left:=20;
B1.OnClick:=TOnEvent(MakeMethod( nil, @Cl ) );
Form1.caption:='fff';
Run(Form1);

with Wc do
 begin
  Style:= CS_VREDRAW or CS_HREDRAW;
  hIcon:= LoadIcon( 0, IDI_APPLICATION );
  hIconSm:= LoadIcon( 0, IDI_APPLICATION );
  hCursor:= LoadCursor( 0, IDC_ARROW );
  hInstance:= hInstance;
  cbSize:= SizeOf( WndClassEx );
  cbClsExtra:= 0;
  cbWndExtra:= 0;
  hbrBackground:= HBRUSH( COLOR_BACKGROUND );
  lpszMenuName:= nil;
  lpfnWndProc:= @WndProc;
 end;

While GetMessage( Msg, 0, 0, 0 )
 do
  begin
   TranslateMessage( Msg );
   DispatchMessage( Msg );
  end;

Halt( Msg.wParam );

end.


>Не заметил, что скрытая форма "кушает" ресурсы.

Хотелось бы знать цифры.


Demt   (2008-04-19 20:24:00) [8]

При уничтожении главной формы завершится приложение. Не заметил, что скрытая форма "кушает" ресурсы.


Наверх

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