Что означает эта ошибка: неопределенный символ: THREADVARLIST_STRINGS - PullRequest
0 голосов
/ 27 июля 2011

Я только начал изучать Free Pascal и написал эту довольно простую программу для тренировки массивов. Я получаю две ошибки:

Strings.lpr (32,1) Ошибка: неопределенный символ: THREADVARLIST_STRINGS

Strings.lpr (32,1) Ошибка: неопределенный символ: STRINGS_STRPAS $ PCHAR $$ SHORTSTRING

Strings.lpr (32,1) Fatal: Произошло 2 ошибки при компиляции модуля, остановка

Код выглядит следующим образом:

program Strings;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, SysUtils
  { you can add units after this };

{$R *.res}
var
  Marks : array [1..10] of Integer;
  index : Integer;
begin
  for index:= 0 to 10 do
  begin
    write('Enter mark of student ',index,': ');
    readln(marks[index]);
  end;

  for index := 0 to 10 do
  begin
    write('Student No. ',index,'   Marks: ',marks[index],'   ');
    if marks[index]>65 then writeln('PASS')
    else writeln('FAIL');
  end;

  writeln('Press any key to continue.');
  readln;
end. {line 32}

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

Не называйте строки вашей программы.Существует предварительно скомпилированный модуль с таким именем.

Обычно означает, что вы создаете основную программу, но не связываете правильный RTL.

Возможные причины:

  • Конфликт версий (компилятор <> RTL)
  • ошибки, допущенные при ручном связывании (при попытке доступа к Pascal из C?)
  • при попытке использовать встроенный RTL, который не поддерживает определенные языковые функции.
  • ( ваш случай ) конфликт имен.Но это обычно редко, и обычно в ловушке компилятором.Следовательно, этот опыт может стоить регистрировать как ошибку в багтрекере FPC
0 голосов
/ 26 августа 2011

Изменение:

Строки программы;

до:

программа testStrings;

исправляет ошибку. Строки - это зарезервированное слово.

Кроме того, у вас также есть «Нажмите любую клавишу» и затем readln readln ждет возврата кареты. Что-то вроде:

WriteLn («Нажмите любую клавишу, чтобы продолжить.»); повторение до нажатия клавиши;

это, вероятно, то, что вы ищете.

...