Pascal - 错误的数字格式

时间:2010-05-16 16:45:19

标签: arrays pascal

程序:

  program s;

  type info = record
                    name, surname: string;
                    min, sek: integer;
              end;

  type arrays = array[1..50] of info;

  var c, b: text;
  A: arrays;
  gr_sk,
  grup_dal: integer;

  begin

  assign(c, 'info.txt'); reset(c);
  read(c, gr_sk);
  read(c, grup_dal);
  id := 1;

  read(c, A[id].name);
  read(c, A[id].sek);

  close(c);

end.

info.txt文件:

3
4
yhgf
4

请告诉我这有什么问题。它说第19行的数字格式不好。我想。

如果我将min, sek: integer;更改为min, sek: string;,则可行。据我所知,它读取数字像字符串。怎么可能,我以前从未体验过。上帝,我会自己开枪。

3 个答案:

答案 0 :(得分:0)

这就是我的想法

您正在尝试将'yhgf'读入整数(gr_sk),因此在读取读取时会抛出错误,因为'yhgf'无法转换为整数。

你应该怎么做?

好吧,我认为您可以将其读入字符串,验证它是一个数字,然后将其转换为整数。坦率地说,我不记得Pascal的做法。谷歌搜索后,发现val procedure

  

Val转换整数或实数   由...表示的数字   字符串Source和中的字符   将它放入x。

Some tips on string functions / procedures:

答案 1 :(得分:0)

我有多年使用 Pascal(现在我使用的是Delphi),我认为你错误地使用了c变量。无论如何,在Pascal中,您可以声明file变量并将记录类型与它们相关联。

示例:

  type info ...

  var f: file info; { <-- here }
  ...

  begin
     assign(f, 'info.txt');
     reset(f);
     id := 1;
     read(f, A[id]);
     close(f);
  { now A[1] should contain file data }
  ...

答案 2 :(得分:0)

更改

read(c, A[id].name);

readln(c, A[id].name);

无论如何,我会朝那个方向搜寻问题;即不读中国领导人。 (CR和LF)

如有疑问,请执行读取(f,)并将一些读取字符的ORD()写入屏幕