![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Application.terminate а программа продолжает работать [D2005, 2003]
Tempora © (2006-05-18 09:53:00)Есть процедура Form1.OnShow внутри которой код:
.....
if DirectoryExists(ini.ReadString('Local','loc_path','c:'))= false then begin
Application.MessageBox(
'Локальная папка не существует.',
'Ошибка',
MB_OK + MB_ICONERROR);
application.Terminate;
end;
........что-то дальше
Я знаю что directoryExists точно должно вернуть false, оно и возвращает это и выводит сообщение об ошибке, но работа программы продолжается, идет выполнение команд которые указаны после этого условия.
Пожалуйста, подскажите, что это?
Tempora (2006-05-18 12:27:00) [1]
> begin
> Application.Terminate;
> Exit;
> end;
Спасибо, работает.
Всем спасибо за советы. В следующий раз буду так и делать.
ASoft (2006-05-18 12:14:00) [2]
> идет выполнение команд которые указаны после этого условия.
Если не хотите, чтобы в теле процедуры продолжалось условие после application.Terminate поставьте :
...
begin
Application.Terminate;
Exit;
end;
но, возможно, правильнее будет [2]
Сергей М. (2006-05-18 12:10:00) [3]
> ЮЮ © (18.05.06 12:05) [5]
Это если форма - основная.
А у автора неизвестно какая
ЮЮ (2006-05-18 12:05:00) [4]Кстати, такое работает как раз в OnShow:
Tester.Streamer.LoadToStringList(sl, 'Marks.ini');
if sl.Count = 0 then begin
Application.MessageBox(
PChar('Не найден файл параметров ' + Tester.Streamer.ZipName + '\' +
'Marks.ini'),
'Ошибка инициализации', 0
);
Close;
end;
Сергей М. (2006-05-18 12:02:00) [5]
> Tempora (18.05.06 11:59) [3]
Ну и выбрось тогда из головы эту затею.
А для новой затеи прислушайся к [2]
Tempora (2006-05-18 11:59:00) [6]
> после Application.Terminate напиши Application.ProcessMessages
Не помогает.
ЮЮ (2006-05-18 11:00:00) [7]поместить этот код в dpr.
Зачем созавать форму и уже в OnShow решать, что это было ошибкой?
Сергей М. (2006-05-18 10:03:00) [8]после Application.Terminate напиши Application.ProcessMessages