Pascal 退出,退出代码=217

Pascal 退出,退出代码=217,pascal,freepascal,Pascal,Freepascal,有人能帮我做以下程序吗?没有编译消息,但在运行时发生错误,消息退出,exitcode=217。 有什么问题吗 程序读取的文本如下所示 3.2 1 2 13 1 2 例如,其中3是n,因此程序必须执行3次,以便读取所有num Program sth; Uses SysUtils; Var m:Integer; LowArr:Integer; HighArr:Integer; n,d:String; f:Text; TheArray,j:array of integer; a:array of ch

有人能帮我做以下程序吗?没有编译消息,但在运行时发生错误,消息退出,exitcode=217。 有什么问题吗

程序读取的文本如下所示

3.2

1 2

13

1 2

例如,其中3是n,因此程序必须执行3次,以便读取所有num

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.

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

read(f,n);
将文件读入
n
,直到行尾。然后它就会卡住。您需要一个
readLN
来读取换行符

类似地,
write(n)
n
写入控制台,但不会有换行符;您需要
writeln(n)
添加换行符

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

因为您没有为seekEoln提供参数,它在键盘上工作,而不是在文件上。您需要
seekEoln(f)
查找文件中的行尾


继续努力,你会成功的。我建议您删除您的
seekEoln
s,并小心阅读整行(readln)还是一个字符(read)

非常感谢,您的帮助非常宝贵。