Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.45 MB
Время: 0.005 c
15-1443997088
pavelnk
2015-10-05 01:18
2016.07.24
Куда выложить код?


4-1276949849
ParamPam
2010-06-19 16:17
2016.07.24
Перехватить wm_timer


15-1441106416
Rouse_
2015-09-01 14:20
2016.07.24
Небольшой анонс по поводу FWZip


15-1447240616
AndrewAndrey
2015-11-11 14:16
2016.07.24
Права доступа WinServer2012r2


15-1444234918
aka
2015-10-07 19:21
2016.07.24
offline переводчик для андроид





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский