2017-04-25 5 views
1

こんにちは私は、3桁の月の略語と1日のファイル入力を読み込むタスクを与えられています。それぞれのユリウス日を計算する必要があります) 2つのINTEGERSを追加しても、エラー201(互換性のないデータ型)が発生します。私は新しいプログラムを作ろうとしていましたが、それを動作させましたが、それを私の既存のコードに実装すると、もう動作しません。これは非常にイライラしています。助けてください。私はこの愚かなクラスにうんざりして、この言語を私が助けにオンラインで見つけることができない場所にしてしまいます。ここ はコードです:変数PASCALにconst文字列を追加するときのランタイムエラー201

program prg6_150; 
const 
     MONABV:array[1..12] of string[03] = ('JAN','FEB','MAR','APR','MAY','JUN', 
              'JUL','AUG','SEP','OCT','NOV','DEC'); 
     MONDAYS:array[1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31); 

var 
     more_rec:Boolean;     { EOF flag } 
     DAY:integer;       { input day } 
     MONTH:string[03];     { input month abbreviation } 
     JULIAN:integer;      { computed Julian day } 
     ch:char;        { spacer character for input } 
     FileIn:Text; 
     FileOut:Text; 

{ your module, to be called "JULIAN_DAY" inserted here } 


    procedure JULIAN_DAY; 
    var 
    j,sum_days:integer; 
    begin 
    j := 0; 
    sum_days := 0; 
    if MONTH = 'JAN' then j := 1 else 
    if MONTH = 'FEB' then j := 2 else 
    if MONTH = 'MAR' then j := 3 else 
    if MONTH = 'APR' then j := 4 else 
    if MONTH = 'MAY' then j := 5 else 
    if MONTH = 'JUN' then j := 6 else 
    if MONTH = 'JUL' then j := 7 else 
    if MONTH = 'AUG' then j := 8 else 
    if MONTH = 'SEP' then j := 9 else 
    if MONTH = 'OCT' then j := 10 else 
    if MONTH = 'NOV' then j := 11 else 
    if MONTH = 'DEC' then j := 12; 
    for J:= 2 to 12 do 
    repeat 
     sum_days := MONDAYS[1] + sum_days; 
     j := j - 1 
    until j = 1; 
    Julian := DAY + sum_days; 
    end; 

    procedure read_rec; 
    begin 
     if Eof(FileIn) then 
     more_rec := False 
     else 
     readln(FileIn,day,ch,month) 
    end; { read_rec } 

    procedure initialize; 
    begin 
     more_rec := True; 
     Assign(FileIn,'JULIAN.DAT'); 
     Reset(FileIn); 
     Assign(FileOut,'JULIAN.OUT'); 
     Rewrite(FileOut); 
     read_rec 
    end; { initialize } 

    procedure process; 
    begin 
     Julian_Day; 
     writeln(FileOut,day:2,' ',month,' ',julian:3); 
     read_rec 
    end; { process } 

    procedure wrapup; 
    begin 
     Close(FileOut); 
     Close(FileIn) 
    end; { wrapup } 

    begin { main } 
     initialize; 
     while more_rec do 
     process; 
     wrapup 
    end. 

Command Prompt Error

+0

MONDAYS [1]は通常MONDAYS [j-1]ですが、私は一時的に編集しようと編集しましたが、それでも型エラーhurr durr –

答えて

1

ランタイムエラー201がincompatible typesを意味するものではありません!

1.Anアレイを使ってアクセスして:あなたは範囲が上 をチェックして、あなたのプログラムをコンパイルした場合

201範囲チェックエラー、その後、あなたは次の場合に、このエラーを取得することができます:それはRange check errordocumented手段として宣言された範囲外のインデックス。

2.範囲外の変数(例:列挙型)に値を代入しようとしています。

コード内のもう1つのエラーは、for loopの可変コードjをループ内で変更したことです。それは許されない。制御変数だけを残して、必要に応じて変更できる別の変数を使用する必要があります。

ネストされたfor looprepeat .. untilを再考する必要があります。おそらく、201エラーを修正する試行錯誤の試行で混乱が生まれました。

関連する問題