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

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

Исключения в 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;


Наверх

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