Последняя версия DataExpress 3 beta от 3 августа 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Вылет из программы при ошибке

Если столкнулись с непонятным поведением программы, возникает ошибка, но нет уверенности, что дело именно в программе (возможно в скрипте).
Аватара пользователя
Develop-Soft
Сообщения: 560
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 28 раз
Поблагодарили: 113 раз
Контактная информация:

Вылет из программы при ошибке

Сообщение Develop-Soft » Вт апр 30, 2019 4:55 pm

Часто вылет из программы происходит "мимо" try..except и не успеваешь прочитать debug (если он есть). Нормально ли такое поведение?
dxdb_icon Здесь один из примеров. Можно определить природу вылета из программы в конкретном случае?
(Для вызова ошибки нужно выделить с Ctrl две три записи и попытаться удалить через контекстное меню).

Аватара пользователя
admin
Разработчик
Сообщения: 4467
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 18 раз
Поблагодарили: 59 раз

Re: Вылет из программы при ошибке

Сообщение admin » Вт апр 30, 2019 9:28 pm

Предполагаю, что нельзя удалять запись в гриде, если их выделено несколько. Bookmark-и (стоят на выделенных записях) станут недействительными. Если перед удалением снять мультивыделение, то ошибки не будет.

Аватара пользователя
Develop-Soft
Сообщения: 560
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 28 раз
Поблагодарили: 113 раз
Контактная информация:

Re: Вылет из программы при ошибке

Сообщение Develop-Soft » Вт апр 30, 2019 11:44 pm

Я так и сделал, однако сабж имеет место быть при некоторых других ошибках. Можно конечно для отлова ошибки писать лог на жёсткий диск до "последнего вздоха", но... Это латается или проблематично?

Аватара пользователя
admin
Разработчик
Сообщения: 4467
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 18 раз
Поблагодарили: 59 раз

Re: Вылет из программы при ошибке

Сообщение admin » Сб май 04, 2019 8:06 pm

Ошибка происходит где-то при обработке сообщений, вне скрипта, поэтому try не ловит исключение. Залатать это проблематично.

Аватара пользователя
Develop-Soft
Сообщения: 560
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 28 раз
Поблагодарили: 113 раз
Контактная информация:

Re: Вылет из программы при ошибке

Сообщение Develop-Soft » Сб май 04, 2019 8:19 pm

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

kok80
Опытный
Сообщения: 265
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 1 раз
Поблагодарили: 9 раз

Re: Вылет из программы при ошибке

Сообщение kok80 » Ср май 22, 2019 7:13 pm

admin писал(а):Предполагаю, что нельзя удалять запись в гриде, если их выделено несколько. Bookmark-и (стоят на выделенных записях) станут недействительными. Если перед удалением снять мультивыделение, то ошибки не будет.


подтвердилось с dgMultiselect, даже если выбрана одна запись, проверил - так работает:

Код: Выделить всё

procedure OnBeforeDelete(sender:TObject);
begin
  Self.Grid.Options:=Self.Grid.Options-[dgMultiselect];
  OldOnBeforeDelete(sender);
end;

procedure OnAfterDelete(sender:TObject);
begin
  Self.Grid.Options:=Self.Grid.Options+[dgMultiselect];
  OldOnAfterDelete(sender);
end;