2011-07-27 5 views
0

Free Pascalの学習を始めたばかりで、これを使って配列を実践するためのかなり基本的なプログラムを作成しました。私は2つのエラーを取得:次のようにこのエラーの意味:未定義シンボル:THREADVARLIST_STRINGS

Strings.lpr(32,1) Error: Undefined symbol: THREADVARLIST_STRINGS

Strings.lpr(32,1) Error: Undefined symbol: STRINGS_STRPAS$PCHAR$$SHORTSTRING

Strings.lpr(32,1) Fatal: There were 2 errors compiling module, stopping

コードは次のとおりです。

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} 
+0

Hmmm、私はコードが少しカラフルに見えると思っていました。 –

+0

あなたはそれのためにdelphiタグを追加する必要があります。 –

+0

真実、@Marco。しかし、「delphi」という質問にタグを付けると、それは実際にはデルファイについてのことである。構文ハイライトだけに質問にタグを付けないでください。代わりに[言語仕様の構文](http://meta.stackexchange.com/questions/63800/interface-options-for-specifying-language-prettify)を使用してください。 PrettifyハイライターはPascalまたはDelphi固有のハイライト規則をサポートしていないため、一般的な規則はすべて取得できます。 –

答えて

3

あなたのプログラムの文字列に名前を付けないでください。その名前のプリコンパイルされたユニットがあります。

通常、メインプログラムを作成しますが、適切なRTLはリンクしません。

考えられる原因:

  • doesnの埋め込まれたRTLを使用しようとしているバージョンの競合、(Cからパスカルにアクセスしようとしている?)手動リンクすることによって作られた(コンパイラ<> RTL)
  • ミス
  • 特定の言語機能をサポートしていません。
  • あなたのケース)いくつかの名前の競合。しかし、これは通常はまれで、通常はコンパイラによってトラップされます。したがって、この経験は、FPCのバグトラッカーのバグとして提出する価値があるかもしれません
0

交換:

プログラム文字列;

to:

program testStrings;

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

また、「すべてのキーを押してください」、続いてreadlnがあります。 readlnは復帰を待ちます。次のようなものがあります。

WriteLn( '続けるには任意のキーを押してください'); までKeyPressed;

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

関連する問題