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

Вниз

Закрытие программы   Найти похожие ветки 

 
Sysanin   (2005-11-18 21:06) [0]

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


 
Eraser ©   (2005-11-18 21:08) [1]

Application.Terminate
или Halt


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

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


 
Eraser ©   (2005-11-18 21:24) [3]


> close   (18.11.05 21:18) [2]

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


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

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


 
SergP ©   (2005-11-19 13:49) [5]


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


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


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

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


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


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

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

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


 
tigrenok ©   (2005-11-20 01:41) [8]

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


 
Eraser ©   (2005-11-20 02:17) [9]

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


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


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


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


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


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


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

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


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

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 - т.е. "классический" способ выхода, когда выполнение доходит до последней строки.



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

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

Наверх





Память: 0.47 MB
Время: 0.036 c
14-1132235091
baks_uz
2005-11-17 16:44
2005.12.11
Память - 256 MB RAM ....


2-1133076362
EXEcuTTeR
2005-11-27 10:26
2005.12.11
Исполнение команд в командной строке


4-1129138447
Конст
2005-10-12 21:34
2005.12.11
FormatMessage и освобожение буфера


5-1113813834
Max_005
2005-04-18 12:43
2005.12.11
Вывод текста в собственном компоненте


2-1132669419
Wolferio
2005-11-22 17:23
2005.12.11
ShellListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский