我正在使用免費的Pascal 2.6.4,並且我創建了此代碼。這是一個程序,要求在文件中代表行號。除了一件事,一切都有效當我想顯示1.行時,它以「exitcode 217」停止。 爲什麼?Pascal文件處理
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'成爲雙精度?您無法讀取第12.5或9.7行的文件;你只能讀整行。把它作爲一個整數,就像'counter'一樣。然後使用調試器遍歷代碼,以查看發生了什麼事情以及發生錯誤時的變量值。然後擺脫幾十年來一直氣餒的goto,並建立一個合適的循環。 –
你好,謝謝你的建議。我沒有看到DOUBLE,但它被糾正了。其實我自己發現了錯誤。因爲如果position = 1,我有兩次readline,所以它跳了一行! :D –