![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EnableControls- AccessViolation [D7]
TrainerOfDolphins © (2006-12-04 13:10:00)Добрый день!
Есть примерно такой код:
with SomeIBTable do
begin
DisableControls;
Filter:=Somestring;
Filtered:=true;
EnableControls;{AccessViolation Error}
end;
Подскажите, пожалуйста, по какой причине вообще может возникать данная ошибка при вызове EnableControls. Может установка фильтра тут и не причём...
ЮЮ (2006-12-05 03:01:00) [1]
> Да, это всё хорошо, но что мне искать в Call Stack?
Проследть цепочку вызовов приведшей к AV. Оно ведь может оказаться а каком нибудь обработчике SomeIBTable, вызов которого не предполагался, а вовсе не в этом коде и даже в VCL-компоненте Поставить бряк в потенционально опасном месте.
Дойти до места AV можно и по F7, поставив бряк на строке EnableControls;
Cама строка SomeIBTable.EnableControls - не место для AV.
Сергей М. (2006-12-04 15:06:00) [2]
> Anatoly Podgoretsky © (04.12.06 15:03) [5]
Все может быть.
Anatoly Podgoretsky (2006-12-04 15:03:00) [3]> Сергей М. (04.12.2006 15:02:04) [4]
Проблема вообще может быть за пределами данного кода.
Сергей М. (2006-12-04 15:02:00) [4]
> TrainerOfDolphins
Проблема - в содержимом Somestring.
TrainerOfDolphins (2006-12-04 14:12:00) [5]
> Отладчик - самое грозное оружие против AV.
> Включи 'Use Debug DCUs' в обциях проекта, ReBuild его и
> в тот момент, когда AV возникает:
> 1) смотришь Call Stack - цепочку всех вызовов методов до
> проблемного
> 2) F7 после этого тоже работает.
Да, это всё хорошо, но что мне искать в Call Stack? Я там понимаю половину :( того, что там написанно. Как мне по его сообщениям определить где я и почему лезу не в ту область памяти?
TrainerOfDolphins (2006-12-04 13:19:00) [6]Таки когда закоментировал установку фильтра, ошибки не было...
Не возникает также ошибки тогда, когда таблица подключена к мастеру (даже при установке фильтра).
ЮЮ (2006-12-04 13:19:00) [7]Отладчик - самое грозное оружие против AV.
Включи 'Use Debug DCUs' в обциях проекта, ReBuild его и в тот момент, когда AV возникает:
1) смотришь Call Stack - цепочку всех вызовов методов до проблемного
2) F7 после этого тоже работает.