难以将数据从二进制文件读取到一个简单的记录数组中,其中数组是固定的(通过常量= 3)。我已经在论坛上寻找解决方案,但没有快乐。
这是我的数组结构:
Const NoOfRecentScores = 3;
Type
TRecentScore = Record
Name : String[25];
Score : Integer;
End;
TRecentScores = Array[1..NoOfRecentScores] of TRecentScore;
Var
RecentScores : TRecentScores;
这是我的程序,试图从二进制文件中加载3个分数......
Procedure LoadRecentScores (var RecentScores:TRecentScores);
var MasterFile: File of TRecentScore;
MasterFileName: String;
count:integer;
Begin
MasterFileName:='HighScores.bin';
if fileexists(MasterFileName) then
begin
Assignfile(MasterFile, MasterFilename);
Reset(MasterFile);
While not EOF(MasterFile) do
begin
Read(Masterfile, RecentScores[count]); // issue with this line?
count:= count +1 ;
end;
Writeln(Count, ' records retrieved from file. Press ENTER to continue');
close(Masterfile);
end
else
begin
Writeln('File not found. Press ENTER to continue');
readln;
end;
end;
这个问题似乎与评论界线有关......这里的问题是什么?当我编译并运行程序时,它意外退出。
答案 0 :(得分:2)
首次使用前,您需要初始化count
。 (你可能也应该包含一个转义,如果你获得的数据超出你的代码所期望的数据,就不要在数组的末尾运行。)
count := 1;
while (not EOF(MasterFile)) and (Count <= NoOfRecentScores) do
begin
Read(MasterFile, RecentScores[count];
Inc(Count); // or Count := Count + 1;
end;
局部变量未在Pascal中初始化,这意味着在分配值之前,它们可以包含任何随机内存内容。