任何人都可以帮我完成以下程序吗?没有编译消息,但在运行时期间发生错误,并且使用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.
答案 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)或只是一个字符(阅读)