我学习制作一个程序,从txt文件中获取数据并将其放在数组中。
以下是其类型:
type
ekspedisi = record
nmeksp : string; // Nama Ekspedisi
jlp : string; // Jenis layanan pengiriman
biaya : integer; // Biaya pengiriman per kg
lp : integer; // per hari
end;
ekspedisiku = record
nom : array [1..100] of ekspedisi;
end;
和一个简单的算法
procedure getDaftarEkspedisi(var kirim : ekspedisiku);
var
i,j,k : integer;
eksp : text;
init : string;
garis : array [1..100] of integer;
mark : string;
jeks : integer;
count : integer;
begin
assign(eksp,'ekspedisi.txt');
reset(eksp);
i := 0;
k := 1;
j := 1;
mark := '|';
jeks := 10;
writeln('Loading ekspedisi.. ');
while(not(eof(eksp))) do
begin
readln(eksp,init);
i := i + 1;
for j := 1 to length(init) do
begin
if init[j] = mark then
begin
garis[k] := j;
k := k + 1;
end;
end;
for i := 1 to jeks do
begin
count := ((i-1)*5);
kirim.nom[i].nmeksp := copy(init,garis[1+count] + 2,garis[2+count]-garis[1+count]-2);
kirim.nom[i].jlp := copy(init,garis[2+count] + 2,garis[3+count]-garis[2+count]-2);
val(copy(init,garis[3+count] + 2,garis[4+count]-garis[3+count]-2),kirim.nom[i].biaya);
val(copy(init,garis[4+count] + 2,garis[5+count]-garis[4+count]-2),kirim.nom[i].lp);
end;
close(kirim);
writeln('loading sukses.');
end;
end;
从该代码中,我收到以下错误
< 166,13>错误:通过var调用arg no.1必须完全匹配:got" ekspedisiku"预期"文字"
好奇地,第166行只是 close(kirim);
感谢任何帮助。
答案 0 :(得分:1)
您需要将文件句柄传递给close
,所以:
close(kirim);
应该是:
close(eksp);
看起来您正在关闭函数中错误位置的文件。它应该很可能是在while
循环之后,所以你需要改变:
close(kirim);
writeln('loading sukses.');
end;
end;
为:
end;
close(kirim);
writeln('loading sukses.');
end;
请注意,这个错误可能是因为你的身份搞砸了 - 如果你在正确格式化你的代码时要小心,那么你就不会发生这种错误。