Halt, насколько я помню, не рекомендуется использовать.
Да, после создания RTTI-объектов категорически не рекомендуется.
Я такие дела (вывод логин формы,..) делаю прямо из PROGRAM-файла, а не из юнита основной формы - то есть до "Application.Run". В этом случае можно халтить. Вот рабочий код :
- Код: Выделить всё
program podpiska;
{$ifdef FPC}{$mode objfpc}{$h+}{$INTERFACES CORBA}{$endif}
{$ifdef FPC}
{$ifdef mswindows}
// {$apptype console}
{$apptype gui}
{$endif}
{$endif}
uses
{$ifdef FPC}{$ifdef linux}cthreads,{$endif}{$endif}msegui,mseforms,
main,dmmain,dmprint, dmacnt1, dmf18,
dmrefs,
dmspf6,
connsetupform,mseconsts,mseconsts_ru,mseconsts_uzcyr,loginform,mseglob;
{$ifdef mswindows}
{$R podpiska-icon.res}
{$endif}
begin
setlangconsts('ru');
application.createdatamodule(tdmmainmo,dmmainmo);
// если не автологин админом -
// вывести логин-форму и, если логин неуспешен - завершить программу
if not dmmainmo.fldAdminLogin.asboolean then begin
application.createform(tloginfo,loginfo);
// выйти из программы, если
if (loginfo.show(true) <> mr_ok) // логин отменен
and
// повторная проверка, так как fldAdminLogin может быть изменено
// в loginfo (выбор режима админа)
(not dmmainmo.fldAdminLogin.asboolean)
then begin
halt; // application.terminate before application.run causes exitcode=217
end;
end;
application.createdatamodule(tdmprintmo, dmprintmo);
application.createform(tmainfo,mainfo);
application.run;
end.
Внимание ! С недавних OnCreate файрится после OnLoaded - пришлось это сделать чтобы решить проблему с визуальным наследованием форм.