所以我有一个.dat文件,其中包含大约20条记录。记录的字段是:名称,日期和分数,我想按分数对记录进行排序,以便我可以在高分表中显示它们。我不确定如何实现排序,所以任何帮助都会很棒。感谢
答案 0 :(得分:0)
将文件读入记录数组,将每条记录插入正确的位置。然后将数组写回文件。
以下是未经测试的代码,写在我的头顶。关键行已经标记为// ** - 第一行找到新读取记录的正确位置,第二行突破该地点的所有记录。
const
maxrec = 50;
type
MyRecord = record
name: string[63];
date: tdatetime;
score: integer
end;
var
myfile: file of myrecord;
rec: myrecord;
data: array [1..maxrec] of myrecord;
i, j, count: integer;
begin
fillchar (data, sizeof (data), 0);
assignfile (myfile, '.....');
reset (myfile);
read (myfile, rec);
count:= 0;
while not eof (myfile) do
begin
i:= 1;
while (i <= count) and (rec.score > data[i].score) do inc (i); //**
for j:= i to count do data[j+1]:= data[j]; //**
data[i]:= rec;
inc (count);
end;
closefile (myfile);
assignfile (myfile, '.......');
rewrite (myfile);
for i:= 1 to count do write (myfile, data[i]);
closefile (myfile);
end;