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

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

Как узнать место в коде, где происходит исключение? [D5]


lipskiy ©   (2002-06-16 01:17:00) 

Происходит эксепшен, место в коде компилятор не показывает. Как узнать это место?
Ошибка возникает стабильно при одних и тех же действиях - при перемещении сплиттера мышкой, в определенной точке - oops!


vlchel   (2002-06-17 06:56:00) [1]

Есть подозрение что дело именно в расчете координат (плохо разработан алгоритм пересчета размеров) при суммарной ширине полей менее чем какоето значение размер одного становится отрицательным а еще хуже нулевым. В таблице наверняка есть обработчик сообщения OnResize поработай с ним


lipskiy   (2002-06-16 19:00:00) [2]


> В предполагаемом месте поставь BreakPoint и пошагово...

Предполагаемое место - здоровенный компонент, не мной писанный.
Ну и такой метод я конечно и сам всегда использую, ну тут - это невозможно, много завязано на графику.

> Я обычно ставлю вывод сообщения перед каким либо куском
> кода и после него, потом более мельче и так далее. Лучшего
> способа я не нашел.

Видимо так и придется делать, искать наощупь, это я тоже знаю, просто м.б. есть более быстрый способ, очень уж здоровый компонент, искать долго.

> Делфи останавливается при ошибке?

Останавливается, галка эта установлена.

> После остановки на ошибке вызови окно просмотра стека и
> поднимись повыше к функциям, которые ты писал.

Это я тоже пробовал - ни хрена не понятно по названиям, нет такого в коде.

> А можно по-подробнее, я не особый спец.

Вот подробнее.
Компонент - таблица GridView, на форме два ее экземпляра, разделенных горизонтальным сплиттером. При уменьшении одной из таблиц по размеру с помощью этого сплиттера при определенной высоте возникает ошибка. Ясно, что глючат какие-то вычисления размеров, координат и т.п. Нащупать то можно, не проблема, вопрос - можно ли это сделать быстро - просто сразу и однозначно?


NailS   (2002-06-16 15:48:00) [3]

Делфи останавливается при ошибке?
Если нет, то сходи в Tools/Debuger Options/Language Exception
и поставь галку Stop on delphi Exceptions.

После остановки на ошибке вызови окно просмотра стека и поднимись повыше к функциям, которые ты писал.


GOOFFY   (2002-06-16 10:57:00) [4]

Удалено модератором


BlackTiger   (2002-06-16 10:51:00) [5]

А можно по-подробнее, я не особый спец.


GOOFFY   (2002-06-16 10:46:00) [6]

Удалено модератором


BlackTiger   (2002-06-16 10:44:00) [7]

Сбой видимо происходит еще до НАПИСАННОГО кода, где-нибудь в инициализации об"екта.
Я обычно ставлю вывод сообщения перед каким либо куском кода и после него, потом более мельче и так далее. Лучшего способа я не нашел.
Сложнее с сервисами, но там я делаю то же самое, но сообщения вывожу в файл.
Может быть есть способы по-проще.


~Rand~   (2002-06-16 09:02:00) [8]

Удалено модератором


Voldemar   (2002-06-16 01:44:00) [9]

В предполагаемом месте поставь BreakPoint и пошагово...


Наверх

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