Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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&#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
15-1195991698
xayam
2007-11-25 14:54
2007.12.23
подскажите как на basic е


15-1195764332
Mul
2007-11-22 23:45
2007.12.23
А есть какие-нибудь статьи у Анатолия Подгоретского?


15-1196026503
Tos-ka
2007-11-26 00:35
2007.12.23
Подскажите условиями входит точка в тело или нет.


2-1196365354
Свой
2007-11-29 22:42
2007.12.23
Ttable и поля Memo и DataSetPageProducer и поля Memo


15-1195569942
Stanislav_
2007-11-20 17:45
2007.12.23
Админу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский