所以我有一个 .dat 文件,其中包含大约 20 条记录。记录的字段是:姓名、日期和分数,我想按分数对记录进行排序,以便将它们显示在高分表中。我不确定如何实现排序,所以任何帮助都会很棒。谢谢
问问题
1193 次
1 回答
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;
于 2013-05-01T05:09:22.567 回答