Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
2-1416664103
Drowsy
2014-11-22 16:48
2016.07.24
Почему не очищаются Columns in DBGrid?


2-1414317120
Вован Петрович
2014-10-26 13:52
2016.07.24
Как правильно передать параметры запросу?


15-1443310614
Drowsy
2015-09-27 02:36
2016.07.24
Что такое с компом?


15-1445415222
кгшзх
2015-10-21 11:13
2016.07.24
прикладная конспирология


15-1444763250
DayGaykin
2015-10-13 22:07
2016.07.24
В какой момент человеку исполняется новое количество лет?




   Наверх