Это источник проекта:приложений выполняется, но иногда не показывает
Application.Initialize;
Application.MainFormOnTaskbar := False;
Application.ShowMainForm := False;
Application.CreateForm(TMain_Form, Main_Form);
Application.CreateForm(TData_Module, Data_Module);
Application.CreateForm(TForm5, Form5);
Login;
Application.Run;
Порядок творения: Main_Form, Data_Module, Form5
Uniconnection таймаут 30 секунд.
Я подключаюсь к SQL Server.
И это у меня в MainForm:
procedure Login;
begin
with TUniConnectDialog.Create(nil) do
try
try
Application.MainForm.Hide;
if not Data_Module.UniConnectDialog1.Execute then
Application.Terminate
else
Application.MainForm.Show
finally
Free;
end;
except
on E : Exception do begin
ShowMessage('Exception class name = '+E.ClassName);
ShowMessage('Exception message = '+E.Message);
end;
end;
end;
И все же, иногда мой диалог подключения не может показать и приложение работает молча в background.I должны использовать диспетчер задач Windows, чтобы закончить его.
Я попытался использовать eureka для его отладки, но он не смог показать мне какую-либо ошибку. Приложение выполняется, но не отображается. Это происходит, возможно, в 3 из 10 случаев. Теперь я не могу понять, что я делаю неправильно здесь.
Edit:
procedure Login;
begin
with Data_Module.UniConnectDialog1.Create(nil) do
try
Application.MainForm.Hide;
if not Data_Module.UniConnectDialog1.Execute then
Application.Terminate
else
Application.MainForm.Show
finally
// Free;
end;
end;
EDIT 2: Это не работает.
Возможно, вы используете два объекта UniConnectDialog. Это намеренно? Кроме того, вы эффективно глотаете исключение, поэтому я не уверен, как эта эврика справится с этим, и ShowMessage, я думаю, показывает как ребенок основной формы, которая скрыта, поэтому вы их не увидите. Я бы попробовал комментировать обработчик исключений и посмотреть, не сработает ли он. Я также попытался бы не скрывать основную форму, чтобы убедиться, что это делает ошибку более ясной. – Dsm
@Dsm UniConnectDialog должен быть одним. – user763539
Несомненно 'с TUniConnectDialog.Create (nil) do' и' if not Data_Module.UniConnectDialog1.Execute then' ссылаются на два разных экземпляра, нет? –