Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как прервать запуск программы? / 8 сообщений из 8, страница 1 из 1
11.11.2017, 10:01:17
    #39551389
ВячеславЛ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDataModule2, DataModule2);
  Application.CreateForm(TForm9, Form9);
  form9.ShowModal;
  if form9.f_login=true then begin

  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TForm5, Form5);
  Application.CreateForm(TForm6, Form6);
  Application.CreateForm(TForm7, Form7);
  Application.CreateForm(TForm8, Form8);

  Application.Run;
  end  else begin
    DataModule2.ADOConnection1.Connected:=false;
    //здесь закрыть приложение
  end;
...
Рейтинг: 0 / 0
11.11.2017, 10:12:33
    #39551395
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
Ничего не делай, если дальше ничего нет - само закроется.
...
Рейтинг: 0 / 0
11.11.2017, 10:53:06
    #39551404
ВячеславЛ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
Гаджимурадов Рустам,

Ошибка AV
...
Рейтинг: 0 / 0
11.11.2017, 11:15:22
    #39551406
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
Дык отладчик в руки. И код, наверняка, не весь привели.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.11.2017, 11:51:27
    #39551416
Sarych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
ВячеславЛ,

Переделайте логику запуска вашей программы с помощью асинхронных сообщений.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
program ...
  //const wm_ShowLogin = wm_User + 120;  
  ...
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1); 
  Application.CreateForm(TDataModule2, DataModule2);
  Application.CreateForm(TForm9, Form9);
  PostMessage(Form1.Handle, wm_ShowLogin, 0,0); 
  Application.Run;
end;

...

unit Unit1;
...
  //const wm_AppStart = wm_User + 121; wm_AppClose = wm_User + 122;

type
  TForm1 = class(TForm)
    ...
  public
      //Показывает Form9 и if (Login) then PostMessage ...
    procedure wmShowLogin (var Msg: TMessage);  message wm_ShowLogin;
      //Продолжить загрузку программы: Form3, Form4, ... 
    procedure wmAppStart (var Msg: TMessage);  message wm_AppStart;
      //Заверщить работу:  DataModule2.ADOConnection1.Connected:=false; Close;
    procedure wmAppClose (var Msg: TMessage);  message wm_AppClose;
  end;
...
Рейтинг: 0 / 0
11.11.2017, 12:10:06
    #39551420
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
AV может возникнуть по разным причинам. Проверяй свои обработчики OnDestroy у Form1,Form9,DataModule2 - может там используются ссылки на неинициализированные Form3..Form8?
...
Рейтинг: 0 / 0
11.11.2017, 12:20:15
    #39551427
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
Sarych> Переделайте логику запуска вашей программы с помощью асинхронных сообщений.

Я боюсь, этого будет недостаточно. Надо многопоточный
COM-сервер написать, к которому обращаться через сокеты.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.11.2017, 14:12:58
    #39551456
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать запуск программы?
Ряд компонент (ClientDataSet, в частности), не любит, когда их разрушают без вызова Application.Run (сам сталивался в эпоху Delphi 5)
Поэтому с тех пор использую следующий подход:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var
  ConnectResult: Integer;
begin
    Application.Initialize;
    Application.CreateForm(TfMain, fMain);
.....
    with TfConnect.Create(Application) do
       try
         ConnectResult := ShowModal;
       finally
         Free;
      end;
  if ConnectResult <> 1 then
  begin
    Application.ShowMainForm := false;
    PostMessage(fMain.Handle, WM_CLOSE, 0, 0);
  end;
  Application.Run;
end.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как прервать запуск программы? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]