Вниз
Скачать: 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.007 c
15-1444167002
Юрий
2015-10-07 00:30
2016.07.24
С днем рождения ! 7 октября 2015 среда


15-1441281618
Landon
2015-09-03 15:00
2016.07.24
Крах приложения внутри FinalizeUnits


2-1416409472
M.A.
2014-11-19 18:04
2016.07.24
GDI+ Подскажите пожалуйста, как расчитать пропорции изображения.


2-1415727709
Mimikron
2014-11-11 20:41
2016.07.24
DBGrid, скроллинг


3-1307684147
Pavor
2011-06-10 09:35
2016.07.24
BDE: Too many passwords




   Наверх