帕斯卡文件处理
Pascal File Handling
我使用免费的 Pascal 2.6.4 并创建了这段代码。这是一个程序,它要求代表文件中行的数字。除了一件事,一切都有效。当我想显示 1. 行时,它以 "exitcode 217" 停止。 为什么?
Program FileTruncate;
uses
SysUtils;
label znova;
const
filename = 'C:\Users\KVIKY\Desktop\Pascal\Projects\FileHandling\test.txt';
var
myfile: text;
line: string;
counter:integer;
position:double;
begin
znova:
Writeln('Zadaj cislo riadku: ');
Readln(position);
if position=0 then exit;
if position>26 then exit;
Assign(myfile, filename);
Reset(myfile);
counter:=0;
Repeat
inc(counter);
readln(myfile);
until counter = position-1;
readln(myfile, line);
Close(myfile);
writeln(line);
Writeln('Stlacte enter pre pokracovanie.');
Writeln('Zadajte 0 pre ukoncenie programu.');
readln;
goto znova;
end.
因为当position
为1时,你的repeat-until
条件永远不会满足(因为你的counter=1
和position-1
为零,所以counter = position-1
会永远不会发生)。
计数器表示目标之前行,所以...
相反,您可以进行不同的初始化:
counter := -1
或者,更好的是,将循环更改为 while
-do
:
while counter < position-1 do
因为你在循环中有一个readln
我使用免费的 Pascal 2.6.4 并创建了这段代码。这是一个程序,它要求代表文件中行的数字。除了一件事,一切都有效。当我想显示 1. 行时,它以 "exitcode 217" 停止。 为什么?
Program FileTruncate;
uses
SysUtils;
label znova;
const
filename = 'C:\Users\KVIKY\Desktop\Pascal\Projects\FileHandling\test.txt';
var
myfile: text;
line: string;
counter:integer;
position:double;
begin
znova:
Writeln('Zadaj cislo riadku: ');
Readln(position);
if position=0 then exit;
if position>26 then exit;
Assign(myfile, filename);
Reset(myfile);
counter:=0;
Repeat
inc(counter);
readln(myfile);
until counter = position-1;
readln(myfile, line);
Close(myfile);
writeln(line);
Writeln('Stlacte enter pre pokracovanie.');
Writeln('Zadajte 0 pre ukoncenie programu.');
readln;
goto znova;
end.
因为当position
为1时,你的repeat-until
条件永远不会满足(因为你的counter=1
和position-1
为零,所以counter = position-1
会永远不会发生)。
计数器表示目标之前行,所以...
相反,您可以进行不同的初始化:
counter := -1
或者,更好的是,将循环更改为 while
-do
:
while counter < position-1 do
因为你在循环中有一个readln