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

Вниз

Исключения в FormActivate, Create и т. д.   Найти похожие ветки 

 
Aleksej   (2004-06-15 13:51) [0]

Как прервать выполнение программы при выполнении некоторого условия при создании\активации формы?
Делаю так:
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 13:53) [1]

if i=100 then
begin
 ShowMessage("Ошибка при создании !");
 Release;
end;


 
Aleksej   (2004-06-15 13:58) [2]

Попробовал. Не работает.
После Release идет на Application.Run;
и висит.... :-(


 
Sandman25 ©   (2004-06-15 14:02) [3]

Виноват, не проверил.
В крайнем случае можно вызвать Free c exit. Только что попробовал - вроде работает.


 
Гаврила ©   (2004-06-15 14:07) [4]

Лучше выполнять эти действия в конструкторе формы, а не на OnCreate
Тогда в случае возникновения исключения форма не будет создана (автоматически будет вызван деструктор)


 
GuAV ©   (2004-06-15 17:15) [5]


> В крайнем случае можно вызвать Free c exit

Да хоть с аборотм, все finally пройдутся.
Только Halt(255) :->


 
Sandman25 ©   (2004-06-15 17:27) [6]

[5] GuAV ©   (15.06.04 17:15)

Я имел ввиду, чтобы не получилось нечто типа

if ... then
 Free;
Label1.Caption := .. // Access Violation



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

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

Наверх




Память: 0.45 MB
Время: 0.034 c
14-1086811406
Gero
2004-06-10 00:03
2004.06.27
BSOD


3-1086261004
Serg
2004-06-03 15:10
2004.06.27
Управление нижним скроллером в DBGrid


14-1086590122
John69
2004-06-07 10:35
2004.06.27
как восстановить файл *.pas


9-1078412723
AlexXn
2004-03-04 18:05
2004.06.27
Перемещение Image


3-1085756667
Bizons
2004-05-28 19:04
2004.06.27
GEN_ID() в IB6





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