Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];
ВнизAccess Violation in ibXpress63.bpl Найти похожие ветки
← →
Drowsy © (2014-10-30 22:46) [0]Возникает при уничтожении модуля данных.
Посмотрел по адресу ошибки в CPU, при уничтожении объекта типа TIBUpdateSQL.
type
TdmMain = class(TDataModule)
....................
qrDryBarCalc: TIBQuery;
uoDryBarCalc: TIBUpdateSQL;
....................
end;
implementation
procedure TdmMain.DataModuleDestroy(Sender: TObject);
begin
а если так, то ошибки нет
qrDryBarCalc.UpdateObject := nil;
end;
В чём причина такой странности? (причём, на модуле несколько пар TIBQuery-TIBUpdateSQL, но остальные нормально уничтожаются.)
← →
Rouse_ © (2014-10-30 23:12) [1]
> qrDryBarCalc.UpdateObject := nil;
Этим ты нивелировал генерацию исключения, при вызове деструктора уже разрушенного ранее объекта. Только и всего.
Ошибка не здесь, а выше по коду.
← →
Rouse_ © (2014-10-30 23:16) [2]Пардон, не выше - а ниже, по коду исполнения, ибо qrDryBarCalc.UpdateObject ранее был уже разрушен. Ищи второй вызов Free над разрушенным экземпляром UpdateObject или обращение к полям этого обьекта.
← →
Drowsy © (2014-10-31 00:30) [3]procedure TdmMain.DataModuleDestroy(Sender: TObject);
begin
а если так, то ошибки нет
qrDryBarCalc.UpdateObject := nil;
end;
Вот я ставлю точку останова здесь на end;
Нажимаю F7, и сразу возникает исключение.
Т.е., при уничтожении модуля данных.
Как я понимаю, происходит уничтожение uoDryBarCalc: TIBUpdateSQL;
но ссылка на него у объекта qrDryBarCalc (qrDryBarCalc.UpdateObject) не обнуляется почему - то (это же вроде должна делать процедура FreeNotificаtion). Поэтому, происходит повторная попытка уничтожить uoDryBarCalc.
А если их разделить( qrDryBarCalc.UpdateObject := nil;) , то они уничтожаются нормально.
← →
Германн © (2014-10-31 04:03) [4]А зачем ты пишешь свой обработчик TDataModule.OnDestroy?
← →
Inovet © (2014-10-31 04:31) [5]И вообще TIBUpdateSQL - зло. Подробности искать надо, забыл. И TIBQuery туда же. Но! Эту ошибку не они создают, они своими занимаются.
← →
Drowsy © (2014-10-31 05:02) [6]
> Германн © (31.10.14 04:03) [4]
Ошибка то при уничтожении модуля происходит, вот я и пытаюсь перед этим найти,что не так с компонентами внутри..
> Inovet © (31.10.14 04:31) [5]
а я , напротив, где-то в сети статью читал, что TibDataSet - плохо, а надо использовать связку TIBQuery - TIBUpdateSQL
← →
Inovet © (2014-10-31 05:48) [7]> [6] Drowsy © (31.10.14 05:02)
Правильно, лучше ходить на костылях, чем на ногах.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c