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

Вниз

Аварийный выход из программы   Найти похожие ветки 

 
cr@nk ©   (2013-09-15 16:29) [0]

Доброго времени суток.
Подскажите, как правильно организовать выход из программы при определённом условии.

Допустим, такая структура программы

нач проц1
некий код
вызов проц2
{ нач проц2
При определённом условии вызывается процедура 3
Внутри процедуры 3 проверяется переданный её параметр (назовём его error). И далее if error then Application.Terminate
конец проц2
}
конец проц1

Я думал, что Application.Terminate завершает работу программу сразу же, а на деле происходит выход в родительскую процедуру и дальнейшее выполнение кода и только потом завершение программы

На всякий случай приведу код процедуры, в которой должно произойти завершение приложения

procedure TfmMain.LogFile(str: string; error: Byte = 0);
var
 F: TextFile;
 Text: string;
 dt: TDateTime;
begin
 AssignFile(F, FN);

 if fileexists(FN) then
   append(F)
 else
   Rewrite(F);
 if error > 0 then
 begin
   WriteLn(F, DateTimeToStr(Now) + ": " + str);
   WriteLn(F, DateTimeToStr(Now) + ": " + "Завершаем работу программы");
   WriteLn(F, "========================================================");
   CloseFile(F);
// отправка сообщения на почту
   Application.Terminate;
 end
 else
 begin
   WriteLn(F, DateTimeToStr(Now) + ": " + str);
   CloseFile(F);
 end;
end;


 
brother ©   (2013-09-15 16:40) [1]

halt?


 
Германн ©   (2013-09-15 16:43) [2]


> Я думал, что Application.Terminate завершает работу программу
> сразу же, а на деле

Terminate calls the Windows API PostQuitMessage function to perform an orderly shutdown of the application. Terminate is not immediate.


Если нечего терять, а позади Москва, вызывай Halt


 
cr@nk ©   (2013-09-15 16:58) [3]

Понял. Спасибо



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

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

Наверх





Память: 0.45 MB
Время: 0.004 c
1-1326543408
p
2012-01-14 16:16
2014.07.13
ProcessHandleToProcessId


2-1378719857
Сергей
2013-09-09 13:44
2014.07.13
КАК ЗАДАТЬ РАНДОМ И ВЫВЕСТИ В ЛЭЙБЛ?


2-1378965082
Коля
2013-09-12 09:51
2014.07.13
Создание Tmemo


1-1326368245
Mister_X
2012-01-12 15:37
2014.07.13
IdMessage, Indy 10


15-1387194883
PChar
2013-12-16 15:54
2014.07.13
не включается макбук





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