Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2010, 12:42   #1
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Вопрос Обработчик ошибок.

Здравствуйте все! Подскажите кто такое уже делал, я хочу сделать обработчик ошибок на Query, если оно не выполнится чтоб что-нить сделалось. Для начала хотябы сообщение.

Код:
        TRY
        Query1.ExecSQL;
        EXCEPT
          ShowMessage('ОШИБКА!!!');
        END;
Как сделать правильно?
DennerV вне форума Ответить с цитированием
Старый 12.08.2010, 12:46   #2
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Код:
try
  Query1.ExecSQL;
except
  on E: Exception do ShowMessage(E.Message);
end;
а суть в чем, что если между try и except возникает исключка, то выполняется код между except и end? а после этого выполнение кода продолжается после данного блока без выхода из процедуры либо функции или что там у вас.
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Sanprof; 12.08.2010 в 12:55.
Sanprof вне форума Ответить с цитированием
Старый 12.08.2010, 12:54   #3
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

это не работает

Суть пока в том, чтоб выдалось сообщение, если это будет работать потом допишу завершение программы чтоб она не зависала и ничего не оставалось в процессах

Последний раз редактировалось DennerV; 12.08.2010 в 13:00.
DennerV вне форума Ответить с цитированием
Старый 12.08.2010, 13:05   #4
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от DennerV Посмотреть сообщение
это не работает
покажите код, т.к. у меня работет, и еще вопрос, что по вашему не работает? код не отрабатывается в excep? или что?
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 12.08.2010, 13:15   #5
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Код:
if IsNumber(Sheet.Cells[i, 1].Text) then
      begin 
        Query1.Close;
        Query1.Parameters.ParamValues['Fam']    := Trim(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_Fam', 'B')].Text);
        Query1.Parameters.ParamValues['Nam']    := Trim(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_Nam', 'C')].Text);
        Otch:= Trim(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_SoN', 'D')].Text);
          If (Otch='нет') or (Otch='НЕТ') then Otch:='';
        Query1.Parameters.ParamValues['SoN']    := Otch;
        Query1.Parameters.ParamValues['DateR']  := StrToDate(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_DateR', 'E')].Text);
        Query1.Parameters.ParamValues['DateS']  := StrToDate(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_DateS', 'F')].Text);
        Query1.Parameters.ParamValues['DateReg']:= StrToDate(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_DateReg', 'G')].Text);
        Query1.Parameters.ParamValues['Otdel']  := IntToStr(Ray);
        TRY
          Query1.ExecSQL;
        EXCEPT
          on E: Exception do  ShowMessage('ОШИБКА!!!');
        END;
        StatusBar1.Panels[1].Text := '  Кол-во строк ['+IntToStr(i-12)+']'; ;
      end;
Прога вместо того чтоб выдать "ОШИБКА!!!" выкидывает сообщение о неверной дате в Query и зависает.
DennerV вне форума Ответить с цитированием
Старый 12.08.2010, 13:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выкидывает сообщение о неверной дате в Query и зависает.
Это при тестировании из-под Делфи или при запуске самого экзешника без Делфи?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 13:26   #7
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Цитата:
Это при тестировании из-под Делфи или при запуске самого экзешника без Делфи?
Делфи вообще закрыл, специально сделал одну ошибку в дате.
DennerV вне форума Ответить с цитированием
Старый 12.08.2010, 13:33   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
DennerV
А ты уверен что именно в этом коде ошибка? Может у тебя еще где-то эта дата срабатывает. Поставь бряк на Query1.ExecSQL; - дойдет до него без ошибок?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 13:46   #9
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

вот запустите экзешник (можете конеш и на вирусы проверить, если не доверяете вдруг)
Project1.rar
а вот его код
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c: real;
begin
  c := 0;
  a := strtofloat(edit1.Text);
  b := 0;
  try
    c := a/b;
  except
    on E: Exception do ShowMessage(E.Message);
  end;
  ShowMessage('Я продолжаю выполнение хотя возникла исключка' + #13 +
                     'и я не должен выполняться  с = ' + floattostr(c));
end;
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 12.08.2010, 13:55   #10
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты уверен что именно в этом коде ошибка? Может у тебя еще где-то эта дата срабатывает. Поставь бряк на Query1.ExecSQL; - дойдет до него без ошибок?
я уже так сделал все одно
Код:
 if IsNumber(Sheet.Cells[i, 1].Text) then
      begin 
        Query1.Close;
        TRY
        Query1.Parameters.ParamValues['Fam']    := Trim(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_Fam', 'B')].Text);
        Query1.Parameters.ParamValues['Nam']    := Trim(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_Nam', 'C')].Text);
        Otch:= Trim(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_SoN', 'D')].Text);
          If (Otch='нет') or (Otch='НЕТ') then Otch:='';
        Query1.Parameters.ParamValues['SoN']    := Otch;
        Query1.Parameters.ParamValues['DateR']  := StrToDate(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_DateR', 'E')].Text);
        Query1.Parameters.ParamValues['DateS']  := StrToDate(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_DateS', 'F')].Text);
        Query1.Parameters.ParamValues['DateReg']:= StrToDate(Sheet.Cells[i, SysINI.ReadString('RAYONS', 'COLUM_DateReg', 'G')].Text);
        Query1.Parameters.ParamValues['Otdel']  := IntToStr(Ray);
        Query1.ExecSQL;
        EXCEPT
          on E: Exception do ShowMessage('ОШИБКА!!!');
        END;
        StatusBar1.Panels[1].Text := '  Кол-во строк ['+IntToStr(i-12)+']'; ;
      end;
DennerV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клавиатурный обработчик. Shub_Niggurath Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.06.2010 22:47
Обработчик ошибок XPAiN Microsoft Office Excel 3 21.04.2008 09:30
Обработчик ошибок. Dj_smart Общие вопросы Delphi 17 30.03.2008 11:58
Свой обработчик ошибок для TImage Aslan Мультимедиа в Delphi 8 29.11.2007 11:54