![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исключения в FormActivate, Create и т. д. [D6, Win2k]
Aleksej © (2004-06-15 13:51:00)Как прервать выполнение программы при выполнении некоторого условия при создании\активации формы?
Делаю так:
procedure TForm1.FormCreate(Sender: TObject);
var
MyIni:TIniFile;
i:integer;
begin
MyIni:=TIniFile.Create('test.ini');
i:=MyIni.ReadInteger('S1','Param1',100);
MyIni.Free;
if i=100 then raise Exception.Create('Ошибка при создании !');
end;
Пытаюсь перехватить исключение следующим образом:
begin
try
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
except on Exception do
MessageDlg('Ошибка',mtInformation,mbYesNoCancel,0);
end;
end.
НО, нужного мне результата не вижу: появляется форма, и программа прекрасно работает.
Что я неправильно делаю?
Sandman25 (2004-06-15 17:27:00) [1][5] GuAV © (15.06.04 17:15)
Я имел ввиду, чтобы не получилось нечто типа
if ... then
Free;
Label1.Caption := .. // Access Violation
GuAV (2004-06-15 17:15:00) [2]
> В крайнем случае можно вызвать Free c exit
Да хоть с аборотм, все finally пройдутся.
Только Halt(255) :->
Гаврила (2004-06-15 14:07:00) [3]Лучше выполнять эти действия в конструкторе формы, а не на OnCreate
Тогда в случае возникновения исключения форма не будет создана (автоматически будет вызван деструктор)
Sandman25 (2004-06-15 14:02:00) [4]Виноват, не проверил.
В крайнем случае можно вызвать Free c exit. Только что попробовал - вроде работает.
Aleksej (2004-06-15 13:58:00) [5]Попробовал. Не работает.
После Release идет на Application.Run;
и висит.... :-(
Sandman25 (2004-06-15 13:53:00) [6]if i=100 then
begin
ShowMessage('Ошибка при создании !');
Release;
end;