0

我刚开始学习 Free Pascal,我编写了这个相当基本的程序来练习数组。我收到两个错误:

Strings.lpr(32,1) 错误:未定义符号:THREADVARLIST_STRINGS

Strings.lpr(32,1) 错误:未定义的符号:STRINGS_STRPAS$PCHAR$$SHORTSTRING

Strings.lpr(32,1) 致命:编译模块时出现 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}
4

2 回答 2

3

不要命名您的程序字符串。有一个具有该名称的预编译单元。

通常意味着您创建了一个主程序,但没有链接正确的 RTL。

可能的原因:

  • 版本冲突,(编译器<>RTL)
  • 手动链接所犯的错误(试图从 C 访问 Pascal?)
  • 尝试使用不支持某些语言功能的嵌入式 RTL。
  • 你的情况)一些命名冲突。但这通常很少见,并且通常被编译器捕获。因此,这种经验可能值得在 FPC bugtracker 中作为 bug 归档
于 2011-07-28T10:47:59.740 回答
0

改变:

程序字符串;

至:

程序测试字符串;

纠正错误。字符串是保留字。

此外,您还有“按任意键”,然后是 readln。readln 等待回车。就像是:

WriteLn('按任意键继续。'); 重复直到 KeyPressed;

可能是您正在寻找的。

于 2011-08-26T12:09:06.973 回答