| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > непонятный процесс сумирования |
| Автор: Black_Joker 22.2.2003, 20:46 |
| Народ, возникла такая проблема: sumin:= 0; for l:= 1 to kolvo do writeln(ms[l]); for l:= 1 to kolvo do inc(sumin, ms[l]); writeln('sumin= ',sumin); writeln; на экране 1 0 0 sumin= 2 2 0 0 sumin= 4 и т.д. Пока этот фрагмент был в основной программе, было все нормально. Когда перенес в процедуру появился такой глюк. Кто-нить знает и как с этим бороться. Разделить на 2 нельзя, могут придраться. |
| Автор: Vco 22.2.2003, 20:53 | ||
А что именно? что за ошибка....если всё нормально то и в процедуре должно быть всё ок...мож синтаксит неправильный?
так? |
| Автор: Vit 23.2.2003, 00:28 |
| Посмотри где и как объявляются переменные... |
| Автор: Pakshin A. S. 23.2.2003, 03:16 |
| У меня такой же глюк был в Delphi: в переменную записывал указатель, через некоторое время он сам менялся на другой, хотя я к нему нигде не обращался. Так и остался он не понятым... |
| Автор: Vit 23.2.2003, 03:52 | ||
1) Отключи оптимизацию 2) Не объявляй глобальными переменными модуля - только локальными или полями класса и всё будет нормально |
| Автор: Black_Joker 23.2.2003, 23:27 |
| Понял где возникла ошибка При объявлении переменных ms: array [1..1] of word; . . . (kolvo <>0) sumin:= 0; for l:= 1 to kolvo do writeln(ms[l]); for l:= 1 to kolvo do inc(sumin, ms[l]); writeln('sumin= ',sumin); writeln; на экране 1 0 0 sumin= 2 2 0 0 sumin= 4 по ходу программы значения заносились в ms[2] и т.д. Но почему паскаль не выругался при внесении переменных в несуществующие ячейки и почему вывел нули, при обращении к ним не понятно. |
| Автор: SmaLL 25.2.2003, 17:50 | ||
Вероятно у тебя отключена опция компилятора проверки выхода за пределы диапазона |
| Автор: Guest_Black_Joker 25.2.2003, 21:48 |
| И как включить? |
| Автор: SmaLL 25.2.2003, 23:07 | ||
В коде программы написать: {$R+} - включить проверку {$R-} - выключить проверку |