Range check error как исправить
Перейти к содержимому

Range check error как исправить

  • автор:

Ошибка Range check error

Просмотр сообщенияmikpav (29.5.2009, 10:53) писал:

#4 Матрос

  • Пол: Мужчина
  • Город: Поток

"Range check error" или иное сообщение системы чаще всего вызывается совсем неожиданной авторами программы, не предусмотренных обычной логикой и "не штатных" ситуаций. Обычно программой улавливается неточность подачи данных и интерпретируется на русском языке.

Накопитель подобных "казусов" при подачи данных постоянно пополняется после анализа присланных примеров.

Вот результаты расчета одной из присланных для анализа систем:-
В системе есть стояки из одного прибора (22 шт!).
Нагрузка на отопительный прибор иногда 13 ватт или 30 ватт, или 40 ватт.

О чём же думает конструктор глядя на свою схему? Как он уверенно обвиняет ПОТОК в отвратительной работе — не считает! Затыкается! Обманули, деньгу содрали за просто так!
Подсунули вот Вам туфту — "сырую поделку" за деньги. Да ещё она, эта поделка, "ругается на иностранном языке".
Обращается к руководству фирму и директор подписывает письмо-рекламацию в адрес руководства ЗАО ПОТОК:

Срочно приходится реабилитироваться. Извиняться. Обязуемся вставить доп. контроль в программу — "сито/подстраховку" на "некорректную подачу данных".
И нелогично же отвечать директору "прямым текстом". Этика. Писать надо "витиевато" = виноват, исправлюсь.

#5 Лена

Прикрепленные файлы

#6 Матрос

  • Пол: Мужчина
  • Город: Поток

Просмотр сообщенияЛена (10 Сентябрь 2013 — 17:13) писал:

Зачем Вы так написали в таблице магистрали?

3 0 4 100 .
-4 0 -3 101 .

надо бы во второй строке 4 и 3 писать без знака, а 101 указать с минусом. Так рекомендовано формировать данные в Инструкцию пользователю программы ПОТОК. Но Вы Инструкции игнорируете. Кто Вам порекомендовал указать "-4" и "-3" ?
Данные подаете как попало, как в ум взбредёт, потом ругаете и программу и костерите авторов. :fool:/>

У Вас всего две ветки и у них автоматически межветочные магистрали симметричны по нагрузке. Но Вы во второй строке ветки обозначили со знаком "-". Так не предусмотрено нынче в однотрубном исполнении — так (знаком "-") обозначались раньше пред включенные стояки лестничных клеток.
Если системы несимметричные по нагрузке в межветочных трубах, то согласно "Руководства пользователю ПОТОК", вначале описывается подающая часть от ТП — "встать" на трубу и последовательно описать все сборные участки до веток. Затем обратная записывается часть по направлению к ТП.
Таким образом, первый подающий сборный участок и последний обратный будут иметь нагрузку всей системы.
Первый сборный участок трубы обратного теплопровода помечается разделителем, знаком "-".

Все — больше никаких "минусов" в таблице быть не должно.

Вынуждены внести в программу доп_контроль данных: минус_Магистраль.jpg

Форум Pawn.Wiki — Воплоти мечту в реальность!: Map Construction Range Check Error — Форум Pawn.Wiki — Воплоти мечту в реальность!

  • (2 Страниц) +
  • 1
  • Вы не можете создать новую тему
  • Тема закрыта

Пользователь офлайнFasminCode

  • Группа: Активные пользователи
  • Сообщений: 166
  • Регистрация: 17 декабря 21

Пользователь офлайнPerdolinka

  • Группа: Активные пользователи
  • Сообщений: 1 549
  • Регистрация: 07 июня 21

Сообщение отредактировал Perdolinka: 22 февраля 2022 — 00:07

Пользователь офлайнFasminCode

  • Группа: Активные пользователи
  • Сообщений: 166
  • Регистрация: 17 декабря 21

Просмотр сообщенияPerdolinka (22 февраля 2022 — 00:06) писал:

Пользователь офлайнPerdolinka

  • Группа: Активные пользователи
  • Сообщений: 1 549
  • Регистрация: 07 июня 21

Пользователь онлайнRomzes

  • Группа: Администраторы
  • Сообщений: 7 330
  • Регистрация: 14 августа 11

Пользователь офлайнFasminCode

  • Группа: Активные пользователи
  • Сообщений: 166
  • Регистрация: 17 декабря 21

Просмотр сообщенияRomzes (22 февраля 2022 — 06:22) писал:

Пользователь онлайнRomzes

  • Группа: Администраторы
  • Сообщений: 7 330
  • Регистрация: 14 августа 11

Просмотр сообщенияFasminCode (22 февраля 2022 — 14:28) писал:

Изображение

Пользователь офлайнFARADAY

  • Группа: Активные пользователи
  • Сообщений: 430
  • Регистрация: 14 ноября 21

Пользователь офлайнFasminCode

  • Группа: Активные пользователи
  • Сообщений: 166
  • Регистрация: 17 декабря 21

Просмотр сообщенияFARADAY (22 февраля 2022 — 16:26) писал:

Добавил, но он прозрачный и не работает.
Изображение
Пользователь онлайнRomzes

  • Группа: Администраторы
  • Сообщений: 7 330
  • Регистрация: 14 августа 11

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

Поделиться темой:

  • (2 Страниц) +
  • 1
  • Вы не можете создать новую тему
  • Тема закрыта

12. Ошибки при выполнении программы. Опции компилятора

Умея пользоваться массивами, условными операторами и операторами цикла, вы можете писать довольно серьезные программы. При выполнении этих программ неизбежно будут возникать критические ошибки, приводящие к аварийному завершению программы. Такие ошибки по английски называются Run-time errors — ошибки времени выполнения. Рассмотрим пока только наиболее часто встречающиеся арифметические ошибки:

Division by zero — код ошибки 200;

Arithmetic overflow — код ошибки 215;

Range check error — код ошибки 201;

Floating point overflow — код ошибки 205;

Invalid floating point operation — код ошибки 207.

Ошибка Division by zero — деление на ноль — возникает при выполнении операций DIV, MOD и /, когда делитель равен нулю.

Ошибка Arithmetic overflow — целочисленное переполнение — возникает при выполнении арифметической операции над целыми числами, когда результат операции выходит за границы соответствующего типа. Такая ошибка произойдет, например, при выполнении программы

VAR a,b : Word; c : Integer; BEGIN a:=100; b:=200; c:=a-b; END.

Ошибка произошла, когда вычислилось значение выражения a-b, равное -100. Мы знаем, что при выполнении операции над операндами типа Word результат будет иметь тип Word, а -100 не является допустимым значением этого типа. То обстоятельство, что это значение мы собирались присвоить переменной типа Integer, не имеет значения, т.к. ошибка произошла до присваивания. Интересно, что, если описать a и b как Byte, то ошибки не будет (см. таблицу 2 в главе 5).

Ошибка Range check error — ошибка проверки диапазона — происходит в двух случаях. Во-первых, при попытке присвоить целочисленной переменной недопустимое значение, и, во-вторых, при использовании недопустимого индексного выражения для элемента любого массива. Проиллюстрируем оба эти случая на простых примерах.

VAR a,b,c : Word; BEGIN a:=$FFFF; b:=1; c:=a+b; END.

Мы попытались присвоить переменной типа Word значение 65536, которое не является допустимым для этого типа.

VAR x : ARRAY[2..8] OF Real; i : Byte;

BEGIN FOR i:=8 DOWNTO 1 DO x[i]:=Sqrt(i); END.

Ошибка произошла при обращении к первому элементу массива, который не существует. Фактически этот второй случай полностью аналогичен первому — мы попытались «присвоить» индексу массива, тип которого-2..8, значение 1.

Ошибка Floating point overflow — вещественное переполнение — возникает при выполнении операции над вещественными числами, когда результат операции слишком велик, или при попытке присвоить вещественной переменной слишком большое значение. Когда речь идет о вещественных числах, термин «слишком большое» следует понимать как большое по абсолютной величине — знак числа не имеет значения. Приведем пример программы, содержащей такую ошибку.

VAR r : Real; BEGIN r:=-1E20; r:=Sqr(r); END.

При возведении в квадрат величины r мы получим слишком большое для типа Real число 1E40.

Ошибка Invalid floating point operation возникает в трех случаях:

1) при вычислении корня из отрицательного числа;

2) при вычислении логарифма неположительного числа;

3) при вычислении функций Trunc и Round от слишком большого (по абсолютной величине) вещественного числа. Эта ошибка довольно очевидна, и мы не станем ее иллюстрировать.

Как же должен поступать программист, когда при выполнении его программы возникают ошибки? Прежде всего нужно локализовать ошибку, то есть найти оператор, в котором она произошла. В этом вам может помочь среда Turbo Pascal, если в ней правильно установлены опции компилятора. Опции компилятора позволяют изменять режим компиляции и задаются в подменю Compiler меню Options среды Turbo Pascal. Пока нас будут интересовать лишь пять опций: Range checking, Stack cheking, I/O checking, Overflow checking, Debug information. Если они включены, то настройка среды благоприятна для отладки вашей программы. Если они выключены, то их обязательно следует включить, а еще лучше задать их непосредственно в тексте своей программы. Опции записываются в программе в виде:

Каждой опции соответствует своя буква (эти буквы выделены в подменю Compiler цветом), символ «+» означает включить, а символ «-» — выключить. В программе можно задать одну опцию, например, или несколько опций — . Некоторые опции можно записывать только в самом начале программы, другие могут размещаться в любом ее месте.

Опция Range checking (R) отвечает за контроль ошибок Range check error, Overflow checking (C) — за контроль ошибок Ariphmetic overflow, I/O cheking (I) — за контроль ошибок ввода-вывода. Смысл опции Stack cheking (S) будет объяснен несколько позже, а опция Debug information (D) включает в код программы отладочную информацию, что позволяет среде Turbo Pascal при аварийном завершении программы показать курсором оператор, в котором произошла ошибка. Позаботьтесь, чтобы при отладке программы перед первым ее оператором была строка — это поможет вам найти и устранить все ошибки. Некоторые неопытные программисты выключают эти опции, тогда программа не прерывается при некоторых ошибках, а продолжает выполняться, на этом основании делается вывод, что программа верна. Это самообман — программа выполняется, но выполняется неправильно и никак не сообщает об ошибках.

Sound Empire

Если кто-то стоит в -1 — измените его на 0, сохраните файл и запустите Студию.

RANGE CHECK ERROR при пуске программы

serwer » Пн ноя 07, 2011 12:28 pm

Wlad » Пн ноя 07, 2011 10:06 pm

Обработка ошибок пользователя — довольно трудный процесс.

Рекомендую разве что обновлять версии. Возможно, в новой эта ошибка уже исправлена. Если нет — пишите, будем работать. На настоящий момент 116-й билд является устаревшим.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *