退出exitcode = 217

时间:2014-01-26 08:00:53

标签: pascal freepascal

任何人都可以帮我完成以下程序吗?没有编译消息,但在运行时期间发生错误,并且使用exitcode = 217退出消息。 什么似乎是问题?

程序读取的文本就像这样

  

3 2

     

1 2

     

1 3

     

1 2

例如,如果3是n,那么程序必须完成3次,所有的数据都将被读取。

Program sth;
Uses
SysUtils;
Var
m:Integer;
LowArr:Integer;
HighArr:Integer;
n,d:String;
f:Text;
TheArray,j:array of integer;
a:array of char;
c:array of string[1];
v:String[1];
i:Integer;

Procedure thenum ;
Begin
repeat
Read (f,a[i]);
Write(a[i]);
until (a[i]=' ');
End;

Procedure sth ;
begin
while not seekEoln and eof(f) do
begin
read(f,j[i]);
Write(j[i]);
end;
End;


procedure space;
begin
Read(f,c[i]);
Write(c[i]);
end;


Procedure theprogram;
begin
thenum;
space;
sth;
end;

begin
Assign(f,'textfile.txt');
Reset(f);
repeat
Read (f,n);
Write(n);
until (n=' ');

Read(f,v);
Write(v);
while not seekEoln and eof(f) do
begin
read(f,d);
Write(d);
end;
StrToIntDef(n,m);
setlength(thearray,m);
LowArr:=Low(Thearray);
HighArr:=High(TheArray);
for i:= LowArr to HighArr do
theprogram;
if eof(f) then;
Close(f);
Readln;
End.

1 个答案:

答案 0 :(得分:1)

如果名为textfile.txt的文件与可执行文件不在同一目录中,您将获得exitcode 217。

read(f,n);

将文件读入n,直到行尾。然后它会卡住。您需要readLN来阅读换行符。

同样,write(n);会将n写入控制台,但不会有新行;您需要writeln(n);添加换行符。

目前还不清楚你的文件结构是什么。空间很难看。如果您使用readln(f,n);,则n将包含读取行的内容 - 如果您想检测空行,则需要until n=''; - 引号之间没有空格。

由于您没有为参数提供seekEoln,因此它适用于键盘,而不是文件。您需要seekEoln(f)才能找到文件中的行尾。

继续堵塞 - 你会到达那里。我建议你删除你的seekEoln并仔细考虑是否要阅读整行(readln)或只是一个字符(阅读)