Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Возникает сообщение об ошибке как его обработать ?   Найти похожие ветки 

 
San1712   (2007-12-01 06:58) [0]

Расположенное ниже сообщение появляется во время выполнения программы. Как я понимаю в нём говорится что где переменная маленького размера. Но проблема в том что эта ошибка возникает в том месте там где нет ошибки, у меня уже такое было, как автоматизировать поиск ошибки ?

Project Project1.exe raised exception class ERangeError with message "Range check error". Process stopped. Use Step or Run to continue.


 
homm ©   (2007-12-01 08:21) [1]

> Но проблема в том что эта ошибка возникает в том месте там
> где нет ошибки

Значит ошибка где-то жо этого места.


> как автоматизировать поиск ошибки

Нанять программиста.


 
Kolan ©   (2007-12-01 09:54) [2]

Скорее всего ты вылез за границы массива. Массивы есть в программе?


 
Igor Zorkov ©   (2007-12-01 10:00) [3]


> San1712   (01.12.07 06:58)
> Возникает сообщение об ошибке как его обработать ?


В меню Tools>Debugger Options>Language Exceptions>Add... добавить ERangeError

try
 код
 except
 on E: ERangeError do
   ShowMessage("FUCKING ERROR");
 end;


 
Kolan ©   (2007-12-01 10:03) [4]

> В меню Tools>Debugger Options>Language Exceptions>Add&#133
> добавить ERangeError

А это зачем делать, объясни?


 
Igor Zorkov ©   (2007-12-01 10:24) [5]


> Kolan ©   (01.12.07 10:03) [4]


Start>All Programs>Borland Delphi 7>Help>Using Delphi


 
Anatoly Podgoretsky ©   (2007-12-01 10:53) [6]


> Igor Zorkov ©   (01.12.07 10:24) [5]

Это не объяснение


 
Igor Zorkov ©   (2007-12-01 11:07) [7]


> Anatoly Podgoretsky ©   (01.12.07 10:53) [6]


На мой взгляд все очень просто, будет ли компилятор обрабатывать ошибку или нет.


 
Anatoly Podgoretsky ©   (2007-12-01 11:15) [8]

Это не ошибка компилятора.

> во время выполнения программы

во время выполнения программы компилятор не работает.


 
Igor Zorkov ©   (2007-12-01 11:18) [9]


> Anatoly Podgoretsky ©   (01.12.07 11:15) [8]


Ну куда мне с вами спорить Анатолий, я пас, просто пытался как то помочь San1712.


 
Anatoly Podgoretsky ©   (2007-12-01 11:45) [10]

> Igor Zorkov  (01.12.2007 11:07:07)  [7]

Повторяю это ошибка не из компилятора.


 
Anatoly Podgoretsky ©   (2007-12-01 11:47) [11]

Ему трудно помочь, поскольку он говорит, что ошибка возникает там, где нет ошибки. Нужно чудо.


 
Kolan ©   (2007-12-01 11:51) [12]

> На мой взгляд все очень просто

Я спросил лиш по тому что ваш код и без этой настройки сработает нормально, но автор незнает где его писать у неоже ошибка в другом месте возникает&#133


 
Anatoly Podgoretsky ©   (2007-12-01 11:57) [13]


> Скорее всего ты вылез за границы массива. Массивы есть в
> программе?

Эта ошибка возникает для любых диапазонов, но не только в массивах.


 
Kolan ©   (2007-12-01 12:52) [14]

> Эта ошибка возникает для любых диапазонов, но не только
> в массивах.

Из опыта моего обычно дело в массивах(строках)&#133


 
Юрий Зотов ©   (2007-12-01 12:58) [15]

> San1712   (01.12.07 06:58)

Это ошибка выхода за диапазон. Возникает она в двух случаях:

1. Переменной пытаются присвоить слишком большое или слишком маленькое для нее значение. Например, переменной типа byte пытаются присвоить значение -1, или 1000.

2. Пытаются обратиться к несуществующему элементу массива. Например, массив содержит 101 элемент с индексами от -50 до +50, а пытаются обратиться к 51-му элементу.

> эта ошибка возникает в том месте там где нет ошибки

Вам самому-то не смешно читать такие заявления?

Ошибка не может возникать там, где ее нет. Так не бывает. Она может проявляться там, где ее нет - вот такое бывает. Значит, либо ошибка все же есть, либо возникает не там, где Вы думаете.

==========================

1. Запустите программу под отладчиком. Когда появится сообщение об ошибке просмотрите стек вызовов. Поставтьте точку останова на одну строку раньше той, которая привела к ошибке и снова запустите программу под отладчиком.

2. Программ должна без всяких ошибок прийти на точку останова. Если это не так - повторяйте п. 1 и 2 до тех пор, пока:
- не придете на точку останова без ошибок.
- и при этом нажатие F8 выдает ошибку.

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



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
2-1196315820
ryden
2007-11-29 08:57
2007.12.23
проблема с MDI приложением


2-1196258361
sydenis
2007-11-28 16:59
2007.12.23
как 2 раза открыть файл ?


3-1187693683
barakuda
2007-08-21 14:54
2007.12.23
update table


2-1196088119
Ivolg
2007-11-26 17:41
2007.12.23
Отправка файлов через сокеты


15-1195814933
@!!ex
2007-11-23 13:48
2007.12.23
Оцените код 2