Error 103

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Error 103

Сообщение Mavlyudov » 12.12.2011 03:20:21

После компилирования при запуске возникает ошибка:
Runtime error 103 at <адрес>
В программе нету работы с файлами.
Есть только обращение к таким процедурам
WRITEln('N=');
READLN(N);
READLN;
В ошибке указан номер строчки , которой соответствует WRITEln('N=');

Компилирую из командной строки(.bat фай) такого содержания
\fpW\bin\win32\ppc386 -Sd -Sg -Un -O1 -Xs -gl %1
Компилятор версии 1.0.10 [2003/06/27].
Также пробовал версию 2.4.4 [2011/04/23]. При компилировании из командной строки ошибка таже самая,
а вот при компилировании из-под оболочки fp.exe всё компилируется и запускается без ошибок.

В чем может быт причина возникновения такой ошибки 103 и как ее устранить?
Mavlyudov
новенький
 
Сообщения: 57
Зарегистрирован: 24.01.2010 20:35:23

Re: Error 103

Сообщение Сквозняк » 12.12.2011 04:48:52

Многие процедуры паскаля, в частности writeln, на нём не реализованы а представляют собой обёртку к системным функциям написанным на языке C. То есть, если очень постараться, можно словить баги этого языка. Попробуй компилировать из коммандной строки не компилятором ppc386 а более для этого предназначенным fpc и без опций. Если заработает, то компилируй снова и добавляй каждый раз по одной новой опции, так ты узнаешь, какая из них вызывает ошибку. Если не поможет, то пример кода вызвающий ошибку в студию :D
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Error 103

Сообщение Sergei I. Gorelkin » 12.12.2011 08:45:06

Скорее всего не хватает ключа -Wg или директивы {$apptype console} в начале программы.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Error 103

Сообщение Mavlyudov » 13.12.2011 03:12:11

Сквозняк
Я предполагал, что fpc (или fp) использует ppc386 при компиляции, поэтому искал файл настроек с директивами, которые можно прописать и в командной строке. Как оказалось, fp и ppc386 - два независимых приложения.
Sergei I. Gorelkin
Видимо, речь все таки идет о ключе ключе -WС. Да, теперь компилируется.
Но при компиляции компилером версии 1.0.10 возникла другая ошибка 203. Переполнение кучи.
Runtime error 203 at адрес
и еще несколько адресов ниже
указана строка с кодом GetMem(ARRM[I], sizeof(ARRM[I]^));
При использовании компилятора версии 2.4.4 такой ошибки не возникает. Но нужно разобраться именно с ошибкой компилятора более ранней версии.
Компилирую как и раньше командной строкой через ppc386.
Настройки .bat файла:
\FPC\2.4.4\bin\i386-win32\ppc386 -Sd -Sg -Un -O1 -Xs -gl %1 -FU<директория модулей> -Foc:<директория модулей> -WC -WN

При запуске программы предполагается ввод большого числа(например, 20000), так чтобы выполнилась часть кода в except.

Вот код:

Код: Выделить всё
program Project4;

//uses Windows, SysUtils, dos;
{ H+}
{ mode Delphi}
{ apptype console}

const
  NNMAT=30000;{8100;}{4096;}{16380;}
  NNARR=30000;

type
  MAS = array [0..NNMAT-1] of Double;
  ARR = ^MAS;
  MAS2 = array [0..NNARR] of ARR;
  PMAS2 = ^MAS2;

var {-------------------------------}
  NMAT0, NMAT: INTEGER;
  ARRM: array [0..NNARR] of ARR;
  ARR0: ARR;
  GE:DWORD;

procedure MAT_PRED(N:INTEGER);
var
  NN, I: LONGINT;
begin
  NN:= SQR(N);
  I:= 0;
  NMAT:= 0;

  while (NMAT < NN) AND (I < NNARR) DO
  begin
    try
      GetMem(ARRM[I], sizeof(ARRM[I]^));
      //sizeof(Double)*NNMAT
    except
      Writeln('It was GOTO',#$20,I,#$20,NMAT);
      Dec(NMAT);
    end;
    Inc(I);
    Inc(NMAT, NNMAT);
//    writeln(I,' ',NMAT,' '{,MEMAVAIL,' ',MAXAVAIL});
  end;
NMAT0:= NMAT;
Writeln(I,' ',NMAT0);
end;{MAT_PRED}

var
  N: INTEGER;
begin
  WRITEln('N=');
  READLN(N);
  MAT_PRED(N);
  WRITELN('Filled Memory: ',SQRT(NMAT0):9:3);
  READLN;
end.
Mavlyudov
новенький
 
Сообщения: 57
Зарегистрирован: 24.01.2010 20:35:23

Re: Error 103

Сообщение Сквозняк » 13.12.2011 06:54:25

Код: Выделить всё
{$mode Delphi}

Без значка $ мой компилятор директиву не принимает.
Используя ppc386 напрямую, ты без пользы ломаешь кроссплатформенность своего скрипта - в каждой платформе этот компилятор называется по разному.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Re: Error 103

Сообщение Mavlyudov » 14.12.2011 01:45:22

Сквозняк
У меня без $, т.к. закомментированы. Все режимы выставлены через командную строку в ключах.
Вопрос не в кроссплатформенности, а в том, как отладить приведенный код
Mavlyudov
новенький
 
Сообщения: 57
Зарегистрирован: 24.01.2010 20:35:23

Re: Error 103

Сообщение Sergei I. Gorelkin » 14.12.2011 14:15:28

Исключения обрабатываются только при подключенном модуле sysutils. Если он закомментарен, то вылет с runtime error - нормальное поведение.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru