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

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

Закрытие программы [D7, XP]


Sysanin ©   (2005-11-18 21:06:00) 

Может и тупой вопрос но... Как можно закрыть программу? Какой процедурой?


GuAV   (2005-11-21 00:56:00) [1]

Eraser ©   (20.11.05 2:17) [9]
Halt приведёт к не-вызову деструкторов форм, однако это не во всех случаях ощутимо ускорит медленную выгрузку, т.к. финализация модулей и финализация глобальных переменных будут всё же выполнена.

Для более быстрого выхода следует использовать ExitThrerad или ExitProcess.

Для ускорения финализации части глобальных переменных или полей классов их "зануляют". var S: string; I: IMyIntf; Pointer(S) := nil; Pointer(I) := nil;

Application.Terminate - выход из цикла диспечеризации сообщений application.Run - т.е. "классический" способ выхода, когда выполнение доходит до последней строки.


Eraser   (2005-11-20 23:30:00) [2]


> Германн ©   (20.11.05 02:38) [10]


> А halt эту информацию теряет. Желаешь ли ты, чтобы твоя
> текущая позиция в игрушке сохранилась для продолжения игры?
>

Так перед вызовом halt надо сохранять данные, а память намного быстрее освобождается сразу для всего приложения, чем при освобождении по частям.


Германн   (2005-11-20 02:38:00) [3]


> Кстати прослеживается аналогия с играми, одно время выход
> из игрушки особенно на слабой машине занимал не мало времени,
>  т.к. предварительно "вручную" освобождалась память, последнее
> же  время (года 3) стали применять именно непосредственное
> закрытие дескриптора процесса и игрушки стали вышружаться
> гораздо быстрее.


Что-то мне сомнительна эта аналогия. "Ручное" освобождение памяти, имхо, не на много медленнее автоматитческого. А вот сохранение, скажем так, "желательной и полезной" информации на диск, действительно может занимать время. А halt эту информацию теряет. Желаешь ли ты, чтобы твоя текущая позиция в игрушке сохранилась для продолжения игры?


Eraser   (2005-11-20 02:17:00) [4]

Приемущество halt (не знаю как насчёт terminate) в том, что программа закрывается практически моментально, не уничтожая предварительно все свои объекты. Например при разрушении формы последовательно уничтожаются все содержащиеся на ней объекты, а halt просто даёт команду закрыть процесс. Естественно перед вызовом halt необходимо сохранить нужные данные.
Кстати прослеживается аналогия с играми, одно время выход из игрушки особенно на слабой машине занимал не мало времени, т.к. предварительно "вручную" освобождалась память, последнее же  время (года 3) стали применять именно непосредственное закрытие дескриптора процесса и игрушки стали вышружаться гораздо быстрее.


tigrenok   (2005-11-20 01:41:00) [5]

Закравай все от меньшего к большему! CLOSE!


Сайбель Алексей   (2005-11-19 18:22:00) [6]


>А в каждой форме открытые DataSets и т.д. и т.п....
> Нехорошо, наверное и frmMain.Close и
> Application.Terminate

Ты вообще программу собираешься закрывать?

Ничего не вижу плохого в frmMain.Close,
предварительно закрывай все свои ДатаСэты.


Asail   (2005-11-19 17:36:00) [7]

А если открыто, помимо главной, еще несколько форм - тогда как?
А в каждой форме открытые DataSets и т.д. и т.п....
Нехорошо, наверное и frmMain.Close и Application.Terminate


SergP   (2005-11-19 13:49:00) [8]


> Sysanin   (18.11.05 21:55) [4]
> Close не подходит, я уже пробовал... А вот Application.Terminate
> мона попробовать


Close только для главной формы


Sysanin   (2005-11-18 21:55:00) [9]

Close не подходит, я уже пробовал... А вот Application.Terminate
мона попробовать


Eraser   (2005-11-18 21:24:00) [10]


> close   (18.11.05 21:18) [2]

А если Form1 - не главная форма программы? )


close   (2005-11-18 21:18:00) [11]

procedure TForm1.Button1Click(Sender: TObject);
begin
 close;
end;


Eraser   (2005-11-18 21:08:00) [12]

Application.Terminate
или Halt


Наверх

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