![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При уничтожении модуля данных возникает AV. [D6, XP]
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]Не нужно уничтожать компоненты руками. Они уничтожатся автоматически.