Notus писал(а):я так понимаю {$R-} - позволит программе выполняться?
Позволять то позволяет, но увеличивает во много раз вероятность получения ошибочность результата. Вот смотрите, что получается:
- если включена проверка соответствия диапазону (Check Range), то компилятор дополнительно включает в Вашу программу код, который проверяет каждое действие и как только Вы выходите за диапазон типа переменной, выдаётся сообщение об ошибке и работа программы останавливается. Например у Вас есть B: Byte; Вы делаете B:=255 {это пока нормально}, а потом Inc(B), то при включённой проверке {$R+} Вы получаете сообщение об ошибке и знаете, что здесь Вам тип надо поменять, например Byte на Word, чтобы продолжать работать с
правильными данными. А вот если у Вас проверка отключена, т.е. стоит {$R-}, то Вы в результате последнего действия получаете в переменной вместо правильного значения 256, неправильное значение 0, т.к. разрядность переменной кончилась и счёт пошёл опять сначала. Это уже ошибкой не считается, вот только получив за свою работу вместо 256 долларов 0, Вы вряд ли останетесь довольны жизнью, да и жена Вас перестанет пускать домой с такой зарплатой.

Как видите, исправить ошибки программы Вам помогут не отключение тех или иных опций компилятора, а наоборот их включение, иначе ошибку программы Вы увидите только тогда, когда разгневанные клиенты придут Вас бить (и возможно ногами

).
Как мне видится, проблема у Вас отнюдь не в неявных преобразованиях, а в неправильных типах данных, которые не соответствуют диапазону проводимых вычислений, либо наоборот - в неправильном подборе алгоритмов вычисления, если определённо известно, что результаты не должны выходить из того или иного диапазона.
