Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

При уничтожении модуля данных возникает AV. [D6, XP]


Страницы:   1 2

Drowsy ©   (2011-07-27 23:00:00) 

Написал обработку события onDestroy.

отладчик показал, что AV при уничтожении upORE

type
 TdmPutDat = class(TDataModule)
   dsMainPutDat: TDataSource;
   ibMainPutDat: TIBDataSet;
   upMainPutDat: TIBUpdateSQL;
   ibOre: TIBDataSet;
   dsOre: TDataSource;
   ibGrinding: TIBDataSet;
   dsGrinding: TDataSource;
   ibEtalon: TIBDataSet;
   dsEtalon: TDataSource;

    upOre: TIBUpdateSQL;

   upGrinding: TIBUpdateSQL;
   upEtalon: TIBUpdateSQL;

   procedure DataModuleDestroy(Sender: TObject);      // onDestroy

 private
 public
 end;

implementation

procedure TdmPutDat.DataModuleDestroy(Sender: TObject);
begin

// если следующая строка закомментирована, то когда Components[0] = upOre,
// Components[0].Free;   - Acess Violation,
// если Раскомментирована, то всё нормально.

 FindComponent('upOre').Free;


 while ComponentCount > 0  do
    Components[0].Free;

inherited;

end;

end.

почему?


Drowsy   (2011-07-28 02:01:00) [21]

нет, я его " из меню набросал "
IDE : FILE->NEW->DATAMODULE

В project source :
 Application.CreateForm(TdmPutDat, dmPutDat);


Германн   (2011-07-28 01:55:00) [22]


> И конструктор TdmPutDat унаследован ( не перекрывал ).

И конструктор тоже "набросал" с панели компонентов?


Drowsy   (2011-07-28 01:42:00) [23]

В том то и дело, что все компоненты набросал с панели компонент в дизайн-тайме. И конструктор TdmPutDat унаследован ( не перекрывал ).


Германн   (2011-07-28 01:23:00) [24]


> Drowsy ©   (28.07.11 01:06) [4]
>
> При уничтожении  var dmPutDat: TdmPutDat унаследованным
> деструктором возникала ошибка AV.  Чтобы выяснить, удаление
> какого компонента приводит к ошибке, я и написал обработчик
> события onDestroy.

А создавал ты их как? Эти компоненты? Или ты их и не создавал "сам ручками"?


Drowsy   (2011-07-28 01:06:00) [25]

При уничтожении  var dmPutDat: TdmPutDat унаследованным деструктором возникала ошибка AV.  Чтобы выяснить, удаление какого компонента приводит к ошибке, я и написал обработчик события onDestroy.
ошибка при дестрое upOre: TIBUpdateSQL;
И самое странное, что

// если следующая строка закомментирована, то когда Components[0] = upOre,
// Components[0].Free;   - Acess Violation,
// если Раскомментирована, то всё нормально.

FindComponent('upOre').Free;


while ComponentCount > 0  do
   Components[0].Free;

inherited;


Германн   (2011-07-28 00:35:00) [26]

Если ты пишешь свой собственный класс, то на кой хрен тут нужно использовать Components и FindComponent?

P.S.
Хотелось бы посмотреть ещё и метод Create класса TdmPutDat.
:)


Drowsy   (2011-07-27 23:24:00) [27]

Автоматическое уничтожение приводило к AV.


_Юрий   (2011-07-27 23:20:00) [28]

Не нужно уничтожать компоненты руками. Они уничтожатся автоматически.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо