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

Вниз

Если ошибка соединения - закрыть приложение. Как это сделать?   Найти похожие ветки 

 
Dron2   (2008-05-06 22:01) [0]

Уважаемые мастера!
Имеется СУБД. При возникновении ошибки соединения (по тем или иным причинам) с БД появляется несколько системных сообщений. Как сделать чтобы появлялось толко мое сообщение, например - "Ошибка соединения" и программа закрывалась?


 
Anatoly Podgoretsky ©   (2008-05-06 22:18) [1]

> Dron2  (06.05.2008 22:01:00)  [0]

Правильно не так, правильно убрать твое Супер сообщение.
А приложение можно закрыть, если закрыть главную форму.


 
Dron2 ©   (2008-05-06 22:22) [2]

Соединение с БД осуществляется в datamodule, a он  создается раньше чем главная форма. Как поступить?


 
Dron2 ©   (2008-05-06 22:36) [3]

Иначе говоря нужно прервать процесс создания форм и закрыть приложение если появилась ошибка соединения, без выдачи служебных сообщений об ошибке.


 
korneley ©   (2008-05-06 22:43) [4]

Суецид приложения - halt(Code).

> Dron2 ©   (06.05.08 22:22) [2]
> Соединение с БД осуществляется в datamodule, a он  создается
> раньше чем главная форма. Как поступить?

 Обрабатывать исключения на этапе подключения, естесственно.


 
Kolan ©   (2008-05-07 00:10) [5]

Aoolication.Terminate


 
Германн ©   (2008-05-07 01:24) [6]


> Dron2 ©   (06.05.08 22:22) [2]
>
> Соединение с БД осуществляется в datamodule, a он  создается
> раньше чем главная форма. Как поступить?
>

А зачем соединение осуществлять "в datamodule"?


 
Dron2 ©   (2008-05-07 07:52) [7]

>korneley ©   (06.05.08 22:43) [4]

>Обрабатывать исключения на этапе подключения, естесственно.
Try except это мне понятно. Беру участок кода где осуществляется соединение, а что написать после except чтобы завершить программу?
>Kolan ©   (07.05.08 00:10) [5]
>Application.Terminate
тоже пробовал. не работает.

>Германн ©   (07.05.08 01:24) [6]
зачем соединение осуществлять "в datamodule"?
Так ведь в datamodule все компоненты содинения с БД. Я всегда так делаю. Это неправильно?


 
Рамиль ©   (2008-05-07 09:02) [8]


> >Application.Terminate
> тоже пробовал. не работает.

Не может не работать, ты просто не знаешь как оно работает.

У тебя точно в Design time все коннекты закрыты?


 
Юрий Зотов ©   (2008-05-07 09:44) [9]


program Project1;

uses
 Forms,
 Unit1 in "Unit1.pas" {Form1},
 Unit2 in "Unit2.pas" {DataModule1: TDataModule};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TDataModule1, DataModule1);
 if not DataModule1.ConnectionError then
 begin
   Application.CreateForm(TForm1, Form1);
   Application.Run
 end
end.

===========================================

unit Unit2;

interface

uses
 SysUtils, Classes, Dialogs;

type
 TDataModule1 = class(TDataModule)
   procedure DataModuleCreate(Sender: TObject);
 private
   FConnectionError: boolean;
 public
   property ConnectionError: boolean read FConnectionError;
 end;

var
 DataModule1: TDataModule1;

implementation

{$R *.dfm}

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
 try
   // Здесь - код соединения с БД. При ошибке возбуждаем исключение:
   raise Exception.Create("Ошибка соединения с БД");
 except
   on E: Exception do
   begin
     FConnectionError := True;
     ShowMessage(E.Message);
   end
 end
end;

end.


 
Ega23 ©   (2008-05-07 09:47) [10]


program .....;

uses
 .....
var hnd:THandle;
ss:string;

begin
 ss:=ExtractFileName(paramstr(0) );
 hnd:=CreateMutex(nil, false, PChar(ss) );
 if GetLastError = ERROR_ALREADY_EXISTS then
 begin
  Beep(100,200); //MessageBeep ->in WinProcs
  ReleaseMutex(hnd);
  Exit;
 end;

 Application.Initialize;

 Application.CreateForm(TDMpas, DMpas); // Создание датамодуля

 if not DMpas.LoginOK then
  begin
     DMpas.Free;
     DMpas:=nil;
     ReleaseMutex(hnd);
     Exit;
  end;

 Application.CreateForm(TFMain, FMain); // Создание главной формы

 Application.Run;
end.


 
Рамиль ©   (2008-05-07 09:55) [11]


> Ega23 ©   (07.05.08 09:47) [10]

А реализация метода TDMpas.LoginOK хде? :)


 
Ega23 ©   (2008-05-07 10:00) [12]


> А реализация метода TDMpas.LoginOK хде? :)


У Юры Зотова...  :))))


 
Dron2 ©   (2008-05-07 19:47) [13]

Огромное всем спасибо!!!
Соединил ответы Юрия Зотова и EGA23. Все заработало в лучшем виде!! Вы просто супер мастера!



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

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

Наверх





Память: 0.48 MB
Время: 7.877 c
15-1208513543
Alex7
2008-04-18 14:12
2008.06.01
Установка Delphi изменила шрифт подсказок Hint-ов на арабику


2-1210144844
Grant
2008-05-07 11:20
2008.06.01
Runtime пакеты


15-1208451149
palva
2008-04-17 20:52
2008.06.01
Диафильмы старые хотите?


2-1210145794
Andr
2008-05-07 11:36
2008.06.01
[Error]: Undeclared identifier: ActiveControl


2-1209925848
ChaosAD
2008-05-04 22:30
2008.06.01
авторизация в приложении на FireBird





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