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

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

Как определить почему возникает access violation? :( [D7, MySQL]


Страницы:   1 2

Новичек ©   (2003-11-25 14:08:00) 

Господа, подскажите, пожалуйста, пути решения. Хоть сам кой-какой опыт в Дельфи имею, но никогда не попадал в такую "тупую" ситуацию.
Пишу "проект" - Delphi 7, MySQL, EhLib.
Все было хорошо, но на каком-то этапе внезапно стала возникать ошибка "Access Violation по такому-то адресу (разные адреса)".
Возникает плавающе (не всегда) в следующей ситуации - открывается форма редактирования любой записи из базы - на форме есть два чекбокса - меняешь состояние любого - жмешь Ок - изменение сохраняется в базе и ошибка может выскочить (а может и не выскочить) именно в этот момент.
Причем, изменения состояния других компонентов никак не влияет.
Кто может подсказать - что можно сделать в такой ситуации? Никак не пойму отчего это, самое неприятное, что ошибка плавающая. :(
Отключал модули, куски "проекта" - не помогает.
Подозреваю, что глючит EhLib, но уверенности нет. Как бороться?
Не дайте погибнуть!


Anatoly Podgoretsky   (2003-11-26 11:59:00) [21]

Sandman25 © (26.11.03 11:56) [11]
Речь то про конкретный случай, а в частных случаях частное решение. Кроме того надо четко различать, то что делается для себя и то что как база для других, распространяемые компоненты надо писать особо тщательно, тем более сложные, потом же замучаешься на еподдержке.


Sandman25   (2003-11-26 11:56:00) [22]

[9] Johnmen © (26.11.03 11:49)

Согласен :)

[10] Anatoly Podgoretsky © (26.11.03 11:53)

Очень правильно. Но бывают более сложные случаи. Например: A and (B or C) or D and E. Если их раскрывать так же, то становится труднее понимать логику условия.


Anatoly Podgoretsky   (2003-11-26 11:53:00) [23]

Ну так если писать квалифицировано, то форма


if Assigned(Column.KeyList) then
if Column.KeyList.Count > 0 then


не вызовет никаких проблем при любой настройке полного вычисления


Johnmen   (2003-11-26 11:49:00) [24]

>Sandman25 © (26.11.03 11:44)

Само сабой. Если кто-то и включает полное вычисление, то явно чего-то не то у него...:)


Anatoly Podgoretsky   (2003-11-26 11:48:00) [25]

Карелин Артем © (26.11.03 11:20) [5]
Очень некрасиво написано.


Sandman25   (2003-11-26 11:44:00) [26]

[6] Johnmen © (26.11.03 11:43)

Если $B-


Johnmen   (2003-11-26 11:43:00) [27]

>Что будет, когда Column.KeyList=nil

Будет Assigned(Column.KeyList)=False


Карелин Артем   (2003-11-26 11:20:00) [28]

Строчка их ЭхЛиба:
if Assigned(Column.KeyList) and (Column.KeyList.Count > 0) then

Что будет, когда Column.KeyList=nil и мы проверяем условие Column.KeyList.Count ??
Будет банальный AV. И так сделан весь компонент :((((((((


Riland   (2003-11-25 15:52:00) [29]

Всем приет
Юзаю EHlib уже года 4 (с момента его появления)
С повлением траблов в нем согласен
Я выходил из данной ситуации следующим образом - находил строку с ошибкой
(у меня компонент с исходниками) и брал его в try..except..end
Помогает на 100% - т/е/ ошибка вс равно вылзает, но она уже никакого
действия на функциональность прграммы не оказывает

А что альтернатиы EHLib в большенстве случаев нет - полность согласен.
Смотрел недавно Quantum Grid - уж очень он тяжел и перегружен
ненужными функциями (хотя для определенных задач он наверное подходит
на все 100%)


Новичек   (2003-11-25 15:44:00) [30]

Спасибо за ответы!

Может быть, кому-то, кто юзает (или хочет заюзать) EhLib, будет полезно - проблема оказалась в нем, как я и подозревал.
Причем, проблема неприятная - из разряда непонимаемых даже автором EhLib.
Мне помогло вот что - в DBGridEh.pas есть закомментированная строка:

Columns[SelectedIndex].Field := nil; //Some time AV BUG

Нужно ее раскомментировать и пересобрать проект. Ошибка уходит.
Стоит закоментировать обратно - снова вылезает.

Правда, как сказал сам автор EhLib, раскомментирование приводит к каким-то другим траблам, но каким он не помнит. Причину же возникновения проблемы вообще, по его словам, он так и не смог понять, что огорчает. :(
У меня пока ничего плохого не вылезло, но все равно неприятно - 70% проекта уже закончено, причем завязано все на EhLib (впрочем, ему альтернативы все равно по-большому счету нет), а тут такая засада.


Карелин Артем   (2003-11-25 14:17:00) [31]

Убедись, что в опциях проекта не стоит Complete boolean eval и сделай ребилд всего проекта.


Digitman   (2003-11-25 14:12:00) [32]


> Подозреваю, что глючит EhLib


запросто, кстати...

собери проект со всеми опциями встр.отладки
запусти его под отладчиком Делфи
выбери меню "Search | Find Error ..", введи адрес, фигурировавший в сообщении об AV ("..at address XXXXXXXX...") - отладчик с достаточной долей вероятности покажет тебе строку исх.текста, при выполнении которой произошло AV


Страницы:   1 2

Наверх

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