Free pascal ошибка 217

10 / 7 / 1

Регистрация: 25.10.2014

Сообщений: 184

1

02.09.2016, 23:53. Показов 35414. Ответов 10


Студворк — интернет-сервис помощи студентам

Я не программист, но иногда балуюсь математикой и требуется проанализировать ряд чисел или перебрать что-то. Установил для этих целей Free Pascal. Решил опробовать, но что-то при запуске программки он на меня заругался, мол «program generated a RTE 217». Требует «save your sources and restart the IDE».

Скажите пожалуйста, что он от меня хочет и как его заставить работать? )



0



Эксперт Pascal/Delphi

2385 / 1297 / 1492

Регистрация: 29.08.2014

Сообщений: 4,661

03.09.2016, 02:52

2

Код приложите. Похоже, что где-то ‘вечный цикл’ или в не существующую область памяти ‘влезли’



0



Модератор

Эксперт по электронике

8316 / 4215 / 1602

Регистрация: 01.02.2015

Сообщений: 13,125

Записей в блоге: 4

03.09.2016, 06:20

3

В файле user.pdf (скачать по ссылке http://www.freepascal.org/docs.var) описание

217 Unhandled exception occurred An exception occurred, and there was no exception handler present. The sysutils unit installs a default exception handler which catches all exceptions and exits gracefully.

Т.е. лучше посмотреть на код.



0



Эксперт Pascal/Delphi

2385 / 1297 / 1492

Регистрация: 29.08.2014

Сообщений: 4,661

04.09.2016, 03:48

5

без среды FP программа работает? ОС какая?

Проверял FPC 3.0 (fpc-3.0.0.i386-win32) на Windows XP, 8.1(x32), 10 (x32 и x64) — везде FPC заработал с первого раза. Ставил с оф. сайта.
Как вариант Lazarus поставьте и в нем создавайте консольные приложения.



1



Модератор

Эксперт по электронике

8316 / 4215 / 1602

Регистрация: 01.02.2015

Сообщений: 13,125

Записей в блоге: 4

04.09.2016, 07:29

6

Возможно, проблема
1. В пути к файлу есть пробелы и кириллица.
2. Антивирус (вернее, его компонент — проактивная защита) не даёт создать файл. Для проверки временно отключить. Если поможет, то добавить все файлы FP в разряд «доверенных».
3. Мешает UAC (компонент современных Windows) — т.к. IDE FP пытается записывать на диск C:, а это уже 10 лет неконвенционально. Настройка FPC

Добавлено через 2 минуты
Еще, по сообщениям на форуме, проблемы возникали при установке FP на диск, отличный от C:.



1



10 / 7 / 1

Регистрация: 25.10.2014

Сообщений: 184

04.09.2016, 15:46

 [ТС]

7

Цитата
Сообщение от Joy
Посмотреть сообщение

без среды FP программа работает? ОС какая?

Проверял FPC 3.0 (fpc-3.0.0.i386-win32) на Windows XP, 8.1(x32), 10 (x32 и x64) — везде FPC заработал с первого раза. Ставил с оф. сайта.
Как вариант Lazarus поставьте и в нем создавайте консольные приложения.

У меня версия такая же версия: FPC 3.0 (fpc-3.0.0.i386-win32), также на Windows XP.
Хотелось бы обойтись чем-то простеньким и привычным. Вникать в Lazarus нет времени и желания.

Добавлено через 13 минут

Цитата
Сообщение от ФедосеевПавел
Посмотреть сообщение

Возможно, проблема
1. В пути к файлу есть пробелы и кириллица.
2. Антивирус (вернее, его компонент — проактивная защита) не даёт создать файл. Для проверки временно отключить. Если поможет, то добавить все файлы FP в разряд «доверенных».
3. Мешает UAC (компонент современных Windows) — т.к. IDE FP пытается записывать на диск C:, а это уже 10 лет неконвенционально. Настройка FPC

Добавлено через 2 минуты
Еще, по сообщениям на форуме, проблемы возникали при установке FP на диск, отличный от C:.

1. В путях файла нет ни пробелов, ни кириллицы, они прописывались автоматически при установке.
2. Антивирус отключил- не помогло.
3. Может быть, т.к. выдает что какие-то проблемы с IDE и с памятью, правда XP вряд ли относится к современным Windows, есть ли в нём этот UAC?
4. FP установлен на диск C.

Что пишет дословно при запуске программы:

«Program generated a RTE 217 at adress $00000000. Save your sources and restart the IDE.»

Нажимаю ок, выдает:

«The IDE generated an internal error and will now be closed.

Еще раз ок и:

«Error seving configuration».

После нажатия ок FP закрывается.



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32582 / 21053 / 8131

Регистрация: 22.10.2011

Сообщений: 36,326

Записей в блоге: 8

04.09.2016, 15:50

8

Цитата
Сообщение от ivashenko
Посмотреть сообщение

Что пишет дословно при запуске программы:

При запуске или при компиляции? Если попробовать собрать программу (по F9, а не Ctrl+F9), тоже вылетает исключение? Если да — то возможна проблема с файлами fp.cfg/fp.dsk, попробуй удалить их (если есть копии), заменить на эти самые копии и перезапустить IDE (fp.dsk можно удалить в любом случае, просто будет потеряна настройка рабочего пространства IDE, а при первом же рестарте IDE этот файл будет пересоздан)



1



10 / 7 / 1

Регистрация: 25.10.2014

Сообщений: 184

04.09.2016, 17:06

 [ТС]

9

Цитата
Сообщение от volvo
Посмотреть сообщение

При запуске или при компиляции? Если попробовать собрать программу (по F9, а не Ctrl+F9), тоже вылетает исключение? Если да — то возможна проблема с файлами fp.cfg/fp.dsk, попробуй удалить их (если есть копии), заменить на эти самые копии и перезапустить IDE (fp.dsk можно удалить в любом случае, просто будет потеряна настройка рабочего пространства IDE, а при первом же рестарте IDE этот файл будет пересоздан)

Проблема при запуске программы. Сборка по F9 дала тот же результат.

Запустил C-cleaner на проверку реестра. Он выдал мне неверные расширения файлов .cfg,.dsk,.ide, а также неверный стандартный значок С:FPC3.0.0bini386-win32fpc32.ico

Удалил указанные Вами файлы, но не найду теперь где взять их копии, без них тот же результат.



0



Модератор

Эксперт по электронике

8316 / 4215 / 1602

Регистрация: 01.02.2015

Сообщений: 13,125

Записей в блоге: 4

04.09.2016, 18:43

10

Ещё последняя идея.
Есть переменная окружения PATH (даже две переменные — для всех пользователей и для текущего). Можно посмотреть, как в ней (них) прописался путь к FPC, не осталось ли записей от предыдущих версий fpc.

Уже не помню, как добраться до них из WinXP, но, кажется, так же — через свойства системы.

Ещё можно запустить из командной строки команду set, она покажет все переменные среды окружения и PATH в том числе.

Добавлено через 57 секунд
Дальше, я вижу лишь шаманство — переустановку, переустановку более ранней версии.



0



10 / 7 / 1

Регистрация: 25.10.2014

Сообщений: 184

04.09.2016, 20:42

 [ТС]

11

Всем спасибо, вопрос разрешился переустановкой версии FPC 2-6-4. Всё заработало. Почему не пошла 3.0.0 непонятно, но мне и 2-6-4 сгодится )



0



Модератор: Модераторы

При попытке выполнить программу выходит exitcode = 217

Здравствуйте! Написал программу, вычисляющую значение функции на определённом интервале, так же имеющую ОДЗ .После запуска программы, программа вылетает и вылазит окошко с надписью «program exited with exitcode=217».

program 123;
uses Math;
const step=0.1;
const e=2.7;
var x,f:real;
begin
x := -8;
while x<=0 do begin
if (((x<0) and ((x>=-2) or ((x>=-6) and (x<-2)))) or ((x=0) and (x>=-6)))
then writeln (‘x=’, x:0:2, ‘Ne podhodit po ODZ’)
else begin
if x<-6 then f:=ln(x)*Power(x,3) — 23
else if x<-2 then f:=(Power(x,0.1*x)/Power(x,2))*(-x/18)
else f:=(cos(2*x)/Power(e,x))*(sin(x)/sin(x));

writeln(‘x=’,x:0:2,’f(x)=’,f:0:2);
end;
x:=x+Step;
end;
readln();
end.

Надеюсь на понимание и помощь, заранее спасибо.

Redhils123
незнакомец
 
Сообщения: 2
Зарегистрирован: 23.09.2019 16:37:23

Re: При попытке выполнить программу выходит exitcode = 217

Сообщение Дож » 23.09.2019 23:05:52

Пожалуйста, используйте тег code при вставке фрагментов кода в сообщение.

Это Run-time error, список кодов и их описание можно найти тут:

https://www.freepascal.org/docs-html/user/userap4.html

(217 — программа кинула исключение, которое не было обработано).

Обычно в программе есть стандартный обработчик исключений, который перехватывает исключение, печатает что это за исключение, и если программа скомпилирована с ключом -gl, говорит в какой строке программы исключение произошло.

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

Код: Выделить всё
uses
  Math;
var
  x: real;
begin
  Writeln('ln(-8) = ', ln(-8));
  x := -8;
  Writeln('ln(x) = ', ln(x));
end.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 892
Зарегистрирован: 12.10.2008 16:14:47

Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

can anyone help me with the following program? There is no compile message, but during the runtime, an error is occured, and the message is, exited with exitcode=217.
What seems to be the problem?

The text that the program reads is like this

3 2

1 2

1 3

1 2

Where 3 is n for instance, so the procedure the program must be done 3 times, so as all the nums., will be read.

Program sth;
Uses
SysUtils;
Var
m:Integer;
LowArr:Integer;
HighArr:Integer;
n,d:String;
f:Text;
TheArray,j:array of integer;
a:array of char;
c:array of string[1];
v:String[1];
i:Integer;

Procedure thenum ;
Begin
repeat
Read (f,a[i]);
Write(a[i]);
until (a[i]=' ');
End;

Procedure sth ;
begin
while not seekEoln and eof(f) do
begin
read(f,j[i]);
Write(j[i]);
end;
End;


procedure space;
begin
Read(f,c[i]);
Write(c[i]);
end;


Procedure theprogram;
begin
thenum;
space;
sth;
end;

begin
Assign(f,'textfile.txt');
Reset(f);
repeat
Read (f,n);
Write(n);
until (n=' ');

Read(f,v);
Write(v);
while not seekEoln and eof(f) do
begin
read(f,d);
Write(d);
end;
StrToIntDef(n,m);
setlength(thearray,m);
LowArr:=Low(Thearray);
HighArr:=High(TheArray);
for i:= LowArr to HighArr do
theprogram;
if eof(f) then;
Close(f);
Readln;
End.

Приложения написанные на Free Pascal могут генерировать ошибку времени выполнения (Run Time Error) когда в программе обнаруживаются определённые аварийные состояния . Этот документ содержит список возможных ошибок и описание их возможных причин.


1 Invalid function number (Неправильный номер функции)

Была попытка неправильного вызова системной функции.


2 File not found (Файл не найден)

Генерируется при попытке перенаименования, стирания или открытия несуществующего файла.


3 Path not found (Путь(директория) не найден)

Генерируется файловой системой когда путь не существует или неправелен.
Также генерируется при попытке получить доступ к несуществующему файлу.


4 Too many open files (Слишком много файлов открыто)

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


5 File access denied (В доступе к файлу — отказано)

Было запрешено получение доступа к файлу. Эта ошибка может произойти по нескольким причинам:

  • При попытке открыть файл, предназначенный только для чтения или в деиствительности являющиёся директорией, для записи.

  • В данный момент занят или заблокирован другим процессом.

  • При попытке создания файла или директории с именем, которое совпадает с именем уже созданного файла или директории.

  • При попытке чтения из файла, открытого только для записи.

  • При попытке записи в файл, открытый только для чтения.

  • При попытке удалить директорию или файл, когда это не возможно.

  • При неимении прав на доступ к данному файлу.


6 Invalid file handle (Неправильный хэндл файла)

Происходит, когда используемая Вами файловая переменная была обнулена (испорчена); Это говорит о том, что память вашей программы была повреждена.


12 Invalid file access code (Неправильные ключи доступа к файлу)

Генерируется когда процедуры reset или rewrite вызываются с неправильным параметром FileMode.


15 Invalid drive number (Неправильный номер диска)

Генерируется когда в функции Getdir или ChDir был передан неправильный номер диска.


16 Cannot remove current directory (Невозможно удалить текущую директорию)

Генерируется при попытке удалить текущую директорию.


17 Cannot rename across drives (Можно переименовывать файлы только в пределах одного диска)

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


100 Disk read error (Ошибка чтения с диска)

Генерируется при невозможности произвести чтение с диска. Обычно происходит при попытке чтения данных, после его окончания.


101 Disk write error (Ошибка записи на диск)

Генерируется когда Вы пытаетесь записать данные на переполненый диск.


102 File not assigned (Файл не определён)

Генерируется функциями Reset, Rewrite, Append, Rename и Erase, При передаче в них файловой переменной, для которой не была выполнена функция AssignFile.


103 File not open (Файл не открыт)

Генерируется следующими функциями : Close, Read, Write, Seek, EOf, FilePos, FileSize, Flush, BlockRead, и BlockWrite если файл не был открыт.


104 File not open for input (Файл не открыт для чтения)

Генерируется функциями Read, BlockRead, Eof, Eoln, SeekEof и SeekEoln если файл не был открыт при помощи Reset.


105 File not open for output (Файл не открыт для записи)

Генерируется функцией write если текстовый файл не был открыт при помощи Rewrite.


106 Invalid numeric format(Неправильный числовой формат)

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


150 Disk is write-protected (Диск защищён от записи)

(Критическая ошибка)


151 Bad drive request struct length (Неправильная длина структуры запроса)

(Критическая ошибка)


152 Drive not ready (Устройство не готово)

(Критическая ошибка)


154 CRC error in data (Ошибка контрольной суммы в данных)

(Критическая ошибка)


156 Disk seek error (Ошибка низкоуровнего поиска на диске)

(Критическая ошибка)


157 Unknown media type (Неизвестный тип …)

(Критическая ошибка)


158 Sector Not Found (Сектор не найден)

(Критическая ошибка)


159 Printer out of paper (Нет бумаги в принтере)

(Критическая ошибка)


160 Device write fault (Сбой записи устройства)

(Критическая ошибка)


161 Device read fault (Сбой чтения устройства)

(Критическая ошибка)


162 Hardware failure (Сбой железа)

(Критическая ошибка)


200 Division by zero (Деление на ноль)

Приложение пыталось разделить число на ноль.


201 Range check error (Ошибка проверки границ)

Если вы компилировали прогамму с включённой провереой границ, Вы можете получить эту ошибку в следующих случаях:

  1. Массив был вызван с индексом, выходящим за декларированые пределы.

  2. Попытка присвоить значение переменной, выходящее за декларированые границы (для instance и enumerated типов).


202 Stack overflow error (Переполнение стека)

Стек превысил свой максимально допустимый размер (в этом случае необходимо уменьшить размер локальных переменных), или стек был повреждён. Эта ошибка генерируется только с включённой проверкой стека.


203 Heap overflow error (Переполнение кучи)

Размер кучи превысил максимально возможный размер. Генерируется при попытке выделить память непосредственно функциями New, GetMem и ReallocMem, или когда экземпляр класса или объекта создаётся и памяти не достаточно. Пожалуйста учтите что, по умолчанию, Free Pascal поддерживает увеличение кучи, то есть, если необходимо, будет произведена попытка её увеличения. Как бы то ни было, если размер кучи превысил максимально допустимый системой и
железом, то Вы получите эту ошибку.


204 Invalid pointer operation (Непрваильная операция с указателем)

Будет сгенерирована при вызове функций Dispose или Freemem с неправильным указателем (чаще всего, Nil)


205 Floating point overflow (Максимальная границы числа с плавающей точкой)

Вы попытались использовать или создать слишком большое число с плавающей точкой.


206 Floating point underflow (Минимальная граница числа с плавающей точкой)

Вы попытались использовать или создать слишком маленькое число с плавающей точкой.


207 Invalid floating point operation (Неправильная операция над числами с плавающей точкой)

Может генерироваться если вы попытались получить квадратный корень или логарифм отрицательного числа.


210 Object not initialized (Объект не инициализирован)

Если программа была скомпилирована с включенной проверкой границ, эта ошибка будет сгенерирована при попытке вызвать виртуальный метод до его конструктора.


211 Call to abstract method (Попытка вызова абстрактного метода)

Ваша программа попыталась вызвать абстрактный виртуальный метод. Абстрактные методы должны быть перекрыты, и только перекрытый метод должен быть вызван.


212 Stream registration error (Ошибка регистрации потока)

Генерируется когда неправильный тип регистрируется в модуле objects.


213 Collection index out of range (Индекс элемента коллекции выходит за допустимые границы)

Генерируется когда Вы попытались обратиться к элементу коллекции с выходящим за допустимые границы индексом (модуль objects).


214 Collection overflow error (Переполнение коллекции)

Размер коллекции превысил максимально допустимый размер, а Вы попытались добавить новый элемент (модуль objects).


215 Arithmetic overflow error (Арифметическое переполнение)

Эта ошибка генерируется когда результат операции превысил допустимые границы. В отличие to Turbo Pascal, эта ошибка генерируется только для 32-bit и 64-bit арифметических переполнений. Это происходит согласно тому, что все операнды конвертируются в 32-bit или 64-bit, до того как производить вычисления.


216 General Protection fault (GP Ошибка защиты памяти)

Приложение попыталось обратиться к недопустимому участку памяти. Это может быть вызвано следующими причинами:

  1. Попытка получить разуказатель для nil.

  2. Попытка получить доступ к выходящему за допустимые границы участку памяти (например, вызов move с неправильной длиной).


217 Unhandled exception occurred (Произошо неизвестное исключение)

Произошло исключение, и для него не существеет хэндла. Модуль sysutils устанавливает handler(менеджер), который отлавливает все исключения, и безопасно выходит в случае обнаружения оного.


219 Invalid typecast (Неправильное приведение типов)

Генерируется когда недопустимое приведение типов производится над классом используя оператор as. Эта ошибка также генерируется, когда объект или класс приводится к недопустимому объекту или классу, и виртуальный метод этого объекта или класса вызывается. Эта последняя ошибка детектируется только с использованием опции -CR компилятора.


227 Assertion failed error (Сбой утверждения)

Утверждение провалено, и процедурная переменная AssertErrorProc не была уcтановлена.


Free Pascal 3.0 под Windows 7 не работает?

Если пробуем поставить для Win7/x64, как и написано на этой странице, сначала 32-разрядный, а потом добавление для x64:

fpc-3.0.0.i386-win32.exe
fpc-3.0.0.i386-win32.cross.x86_64-win64.exe

со всеми установками по умолчанию, всё равно на любой программе при попытке запуска комбинацией клавиш Ctrl+F9 получаем ошибку RTE 217. Впрочем, если поставить только 32-разрядный дистрибутив, увидим то же самое.

Русские буквы в пути к файлу и т.п. вещи исключены.

Cама ошибка, похоже, означает принудительное прерывание процесса клавиатурной комбинацией.

Разбираться в проблеме лень, есть простое решение…

Поставить старую добрую версию 2.6.4, она работает, в том числе и просто 32-разрядная «базовая» fpc-2.6.4.i386-win32.exe без всяких дополнений для x64.

Чтобы скачать, поищите Гуглем имя файла fpc-2.6.4.i386-win32.exe, объём 40Мб.

Для проверки хорошо использовать что-то такое:

uses crt;
begin
 clrscr;
 readkey;
end.

Файлы среда по умолчанию сохраняет аж в C:FPC2.6.4bini386-win32 , причём, культурно предложит сохранить при первом запуске не сохранённой ранее программы.

14.01.2017, 17:04 [4276 просмотров]


К этой статье пока нет комментариев, Ваш будет первым

Понравилась статья? Поделить с друзьями:
  • Free pascal 106 ошибка
  • Free fire ошибка сети
  • Free fire ошибка загрузка прервана
  • Free fire ошибка времени
  • Franke варочная панель коды ошибок