Перехват исключения: Record already locked by this session
Нарыл тут: http://www.swissdelphicenter.ch/torry/showcode.php?id=37 список каких-то ошибок, есть там и моя: $2807 (10247) = Record already locked by this session, но я не пойму что означает это: $2807 (10247), адрес ошибки или что это такое и зачем оно нужно?
Подробнее смотри в Help.
Подробнее смотри в Help.
Совершенно верно, использую BDE. Пробывал я вот так:
/* BDE hardcode */
except
on E: EDBEngineError do begin
/* BDE damn */
end
end
и не получается, Отключал Debugger Options - Stop on Delphi exceptions, разницы ни какой. Надо справку поглядеть, мож вычитаю что...
Если это не очередная багофича BDE, скорее всего, ошибка наведённая. Ищи в других местах, где утекает память и/или разрушается стек.
/* BDE hardcode */
except
on E: EDBEngineError do begin
/* BDE damn */
end
end
А попробуй:
/* BDE hardcode */
except
on E: Exception do begin
ShowMessage(E.ClassName + ': ' + E.Message);
end
end
Так по крайней мере узнаешь, какого типа исключение возникает...
Вполне возможно, что исключение возникает не в этом блоке. Тогда можно сделать следующее:
Кинь на форму компонент TApplicationEvents, у него создай обработчик события OnException:
begin
ShowMessage(E.ClassName + ': ' + E.Message); //*
end;
На строке * поставь breakpoint. Когда отладчик остановиться на нем, посмотри стек вызовов.
Код:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
ShowMessage(E.ClassName + ': ' + E.Message); //*
end;
и в результате стало вместо прежнего сообщения об ошибки выпрыгивать другое(я его прикрепил), которое мне больше нравится, да ещё изменив в нём вот это: E.ClassName + ': ' + E.Message, на: ‘Ошибка, нет доступа!’, я остался доволен. Если будет нормально работать, то пусть так и остаётся, если конечно это сообщение не будет вылетать, вместо перехваченных мною исключений в других формах, а на этой форме у меня только такое исключение возможно.
По поводу этого:
/* BDE hardcode */
except
on E: Exception do begin
ShowMessage(E.ClassName + ': ' + E.Message);
end
end
А это:
для меня пока еще слишком сложно, что такое breakpoint, это когда слева строки красную точку ставишь и строка красной становится, или что это? И как посмотреть стек вызовов?
Не нужно с меня смеяться, я пока ещё только учусь! Ещё раз спасибо!
Если честно, учиться у тебя пока плохо получается. Сказано ведь, что ошибка наведённая скорее всего. Надо найти причину, а не ставить заплаты.
Причину я знаю. Я начинаю редактирвать запись:
Далее так может получится, что я опять пытаюсь редактировать этуже запись, но уже
др. тейблом. Это связанно с особенностью моей программы, нечего страшного в этой ошибке нет, её нужно было перехватить и выдать сообщение, что запись уже редактируется. В этоге я решил эту проблему обычным условием, т.к. перехватить не удалось.:(