家庭作业中的Pascal运行时错误106

时间:2017-03-14 21:43:51

标签: pascal

第一次在这里发帖,所以我会尽力做到。

我正在制作我的第一个程序,该程序打印了一类学生的百分比,给出了id,last&名字和必须转换的作业分数。我能够编译它只有两个关于assignment_score和assignment_percentage未初始化的警告。

我的read_record,initialize和main模块中出现了运行时错误106(这是读取非数字值的地方,这是一个非数字值的地方)(我认为这就是术语)。

它与数据文件中的间距有关,但也许我在代码中做错了,因为这是我的第一个程序,我正在寻找任何可能的帮助。

Read_Record:

begin
  if EoF(FileIn) then
    more_students := False
  else
    readln(FileIn,student_id,last_name,first_name,assignment_score)
end; {read_record}

初​​始化:

Procedure initialize;
begin
  more_students:= True;

  {Assigns files to input and output and rewrites them for the code }
  Assign(FileIn, 'prg2a-150.dat');
  Reset(FileIn);
  Assign(Fileout, 'Prog2.txt');
  Rewrite(fileout);

  READ_RECORD;
  Print_Header
end; { initialize }

我的流程& main(当我调用我正在编写FileOut的进程时,我在第100行收到错误)

procedure process;
begin
  {Line check for print header}

  if line_count > 57 then
    print_header;

  Inc(line_count);

  { Converts score to percentage }
  compute_grade;

  {Report Percentage}
  writeln(FileOut, student_id, space(2), last_name, space(1), first_name, space(2), assignment_percentage:5:1);

  { Next Runner Data }
  read_record
end; { process }


{WRAP UP -- No summary so  just the files are being closed }
procedure wrapup;
begin
  close(FileOut);
  close(FileIn)
end; { wrapup }

begin { main }
  initialize;

  while more_students do
    process;

  wrapup
end.

最后,这是我的数据文件:

032919631 BACH                AMANDA    14.1 

327777582 GUNDERSON           EMILY      9.9 

188941863 DARLING             CHRIS     14.7 

396501493 JACKSON             GUY        2.1 

552753315 MILKOVICH           LAURA 21.0 

553962171 ZADINS              WALLACE   28.9 

989570643 KLIPP               JOAN      33.3 

468497243 CARPENTER           BETTYANNE 6.0 

112324230 RIKER               NANCY     17.1 

720789066 UTHE               SHARON    12.7 

878468839 NULL                LIVAK      0.0 

606537736 ZUCKERMAN           YVONNE     1.0 

996498720 KINGSLIGHT         JERRIE    14.5 

453310627 GAUTHIER            DONALD     7.8 

289324008 HIRSH               GAYLENE   32.3 

361582495 KELLY               JEAN 0.1 

441892834 FACTOR              DANI      15.8 

255715006 MARKS               KIMBERLEE 8.9 

535282507 MORROW              LEONARD   29.8 

566318464 COSGROVE            CAROL     15.8 

158778873 MUDD                LES  29.1 

574450163 TIMMERMAN           ROY        2.9 

032731233 MUIZNIECE           LESLIE    14.3 

832142931 HARMAN              FRITZ     34.5

2 个答案:

答案 0 :(得分:0)

如果您的输入文件在每两个数据行之间确实有一个空行,ReadLn会在读取空行时立即抛出错误,因为您告诉它期望数字值。

答案 1 :(得分:0)

<块引用>

以下内容会有所帮助。不要 *读入一个整数变量一个字符串。

  *HERE is an example output/error :-
   *--S P A C E --
    ? kk
    Runtime error 106 at $0804893A
      $0804893A
      $0806D76D*
<块引用>

已更正

*--S P A C E --
? 1
...
...
EXIT*
<块引用>
*Above NOT *kk* BUT *1*