2014-06-17 68 views
0

文件读取我读整数的文件,每一个新行,像这样:从帕斯卡

function arrayFromFile(nameFile : string) : pole; 
var 
    userFile : text; 
    d : data; 
    i : integer; 
    p : array; 
begin 
assign(userFile, nameFile); 
reset(userFile); 
i:=0; 
repeat 
    inc(i); 
    readln(userFile, d); 
    p[i]:=d; 
until eof(userFile); 
close(userFile); 
arrayFromFile:=p; 
end; 

我遍历这样的:

procedure writeArray(p : array); 
var 
    i : integer; 
begin 
i:=0; 
while p[i+1]<>0 do begin 
    inc(i); 
    writeln(p[i]); 
end; 
end; 

后来,当我做然后,如果A更长(有更多的线),它写出一个罚款,但B突然有相同的长度,其余的行是fil以A的整数领导!一个例子是here

你知道为什么以及如何避免这种行为吗?谢谢。

回答

1

没有使用的全貌,这是很难说的,但是你读出程序似乎并没有保留的元素数量的轨道上读,因为它不保存的我的最终值

在写入例程似乎假定值为0的元素是数组的末尾。如果这是惯例,一般的“数组的结束”,也许

inc(i); 
p[i]:=0; 

直到读出程序将解决你的问题(假设你的数组被大到足以容纳的最大文件+1元。

+0

它解决了这个问题,谢谢。在Pascal中,数组中元素的默认值是什么? – mirgee

+0

没有默认值 –