Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизВозникает сообщение об ошибке как его обработать ? Найти похожие ветки
← →
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…
> добавить 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]> На мой взгляд все очень просто
Я спросил лиш по тому что ваш код и без этой настройки сработает нормально, но автор незнает где его писать у неоже ошибка в другом месте возникает…
← →
Anatoly Podgoretsky © (2007-12-01 11:57) [13]
> Скорее всего ты вылез за границы массива. Массивы есть в
> программе?
Эта ошибка возникает для любых диапазонов, но не только в массивах.
← →
Kolan © (2007-12-01 12:52) [14]> Эта ошибка возникает для любых диапазонов, но не только
> в массивах.
Из опыта моего обычно дело в массивах(строках)…
← →
Юрий Зотов © (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c