m[n-1] в первой итерации — какое-то совершенно неизвестное и непонятное число, хранившееся в памяти, которую занял массив до выполнения программы. Хотя вообще код — сделайте меня развидеть это :) Может проще в Excel'e (или в Calc'e) посчитать?
Ну вообще говоря ошибка чисто ваша, делфи дает возможность контроля и управления выводом ошибок, и бывают случаи когда делфи говорит об ошибках, которые таковыми не являются, вот тогда можно настраивать компилятор. Эх были времена, пока учился часто приходилось писать на делфи.
Ну это не странность Делфи. Странно, что вы обращаетесь к не инициализированному m[0]. А дома вам видимо повезло и в m[0] память была нулями забита.
А делфи при компиляции ругается на выход индекса за пределы массива только для константных индексов.
Еще есть опция Range Checking при которой генерируется дополнительный код для проверки возможного выхода значений переменных за границы диапазона. Программа, откомпилированная с активной опцией, занимает несколько больший объем памяти и исполняется медленнее, зато дает возможность контролировать выход индексов за пределы, определенные в описании массивов. По умолчанию эта опция выключена.
Да, про m[n-1] итерацию писали чуть выше — основную свою ошибку я понял. Как я уже сказал, код писался в спешке и… да, позор, но ошибки не заметил. С остальными машинами тоже повезло (не только домашней).
Смутило меня:
1) правильные значения (правда, последнее не посчитал)
2) непонятное выполнение программы (наоборот)
За опцию Range Checking — отдельное спасибо. Буду в курсе.
Странности в Delphi 7