Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.07.24;
Скачать: 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 вся ветка

Текущий архив: 2016.07.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1416468559
Endy
2014-11-20 10:29
2016.07.24
Подскажите литературу, WinAPI, интерфейсы (interfaces)


15-1447765802
Кто б сомневался
2015-11-17 16:10
2016.07.24
Digital signatures - как узнать name of signer программно


2-1413879971
Alex_C
2014-10-21 12:26
2016.07.24
Своя отрисовка TMemo


15-1442179801
Юрий
2015-09-14 00:30
2016.07.24
С днем рождения ! 14 сентября 2015 понедельник


15-1444638709
Subway
2015-10-12 11:31
2016.07.24
Математическая задача "Проехать все станции метро"