Ошибка 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:/>
У Вас всего две ветки и у них автоматически межветочные магистрали симметричны по нагрузке. Но Вы во второй строке ветки обозначили со знаком "-". Так не предусмотрено нынче в однотрубном исполнении — так (знаком "-") обозначались раньше пред включенные стояки лестничных клеток.
Если системы несимметричные по нагрузке в межветочных трубах, то согласно "Руководства пользователю ПОТОК", вначале описывается подающая часть от ТП — "встать" на трубу и последовательно описать все сборные участки до веток. Затем обратная записывается часть по направлению к ТП.
Таким образом, первый подающий сборный участок и последний обратный будут иметь нагрузку всей системы.
Первый сборный участок трубы обратного теплопровода помечается разделителем, знаком "-".
Все — больше никаких "минусов" в таблице быть не должно.
Вынуждены внести в программу доп_контроль данных:
Форум 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-й билд является устаревшим.