0

Free Pascalを学び始めたばかりで、配列を練習するためのこのかなり基本的なプログラムを作成しました。2つのエラーが発生します:

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バグトラッカーのバグとして提出する価値があるかもしれません
于 2011-07-28T10:47:59.740 に答える
0

変化:

プログラム文字列;

に:

プログラムtestStrings;

エラーを修正します。文字列は予約語です。

また、「PressAnyKey」の後にreadlnが続きます。readlnはキャリッジリターンを待ちます。何かのようなもの:

WriteLn('続行するには任意のキーを押してください。'); KeyPressedまで繰り返します。

おそらくあなたが探しているものです。

于 2011-08-26T12:09:06.973 に答える