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

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

Снова про прервание Application :) [D5, Win2k]


kronprince ©   (2002-06-04 17:31:00) 

Не могу понять откуда Exception ???

Application.Initialize;
// ну тут все понятно
formAbout:=TformAbout.Create(nil);
formAbout.Show();
formAbout.Update();
Application.CreateForm(TData, Data);
// boolCreateError - глобальная, устанавливается при создании Data
if not boolCreateError
then begin
Application.CreateForm(TFormMain, FormMain);
// .... и еще куча всего

formAbout.Free();
Application.Run;
end{if boolCreateError}
else begin
formAbout.Free();
Data.Free();
end;{if else}


и как коректно убить результаты работы Application.Initialize;???
вообще как корректно освободить всю память если не хочешь запускать Application.Run;???


Игорь Шевченко   (2002-06-04 17:50:00) [1]

Shaman_Naydak © (04.06.02 17:47)

Если автору надо в dpr что-то делать по условиям, то не прав.
Но этот способ сам по себе корявый - в dpr по условию либо выполнять run, либо нет.


Shaman_Naydak   (2002-06-04 17:47:00) [2]

> Игорь Шевченко ©
Извините, вы не правы
Terminate не отработает, так как он не хочет запускать Application.Run, а значит из очереди сообщений Quit никто не достанет :(

A Halt действительно очень грубо!!!


Shaman_Naydak   (2002-06-04 17:44:00) [3]

Блин.. последние строчки - после
> Пишу не проверяя, так что звиняйте, если что
НЕ НУЖНЫ - наследие Cut & Paste, блин


Shaman_Naydak   (2002-06-04 17:43:00) [4]

1. Application.Initialize не делает ничего такого, что нужно было бы убивать! Единственное, что он делает, так это вызывает цепочку InitProc.. модули сами в finalization сделают то, что нужно.
2. Откуда Exception - ясный пень при создании либо формы Data, либо формы FormMain.. Кстати, вы в курсе, что главной формой у вас будет считаться именно форма Data..
Учить язык надо, батенька.
Работать с ошибками надо путем установки обработчиков исключений, а не анализом каких-то булевских переменных..
Приблизительно так:
Application.Initialize;
formAbout:=TformAbout.Create(nil);
try
formAbout.Show;
formAbout.Update;
try
Application.CreateForm(TData, Data);
Application.CreateForm(TFormMain, FormMain);
formAbout.Release;
formAbout:=nil;
Application.Run;
except
on E: Exception do ShowMessage(E.Message);
end;
finally
formAbout.Free;
end;

Пишу не проверяя, так что звиняйте, если что


formAbout.Free();

Data.Free();
end;{if else}


Игорь Шевченко   (2002-06-04 17:37:00) [5]

Убить:

Application.ShowMainForm := false;
Application.Terminate();

Совсем грубо - Halt


Наверх

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