0

所以我有一个 .dat 文件,其中包含大约 20 条记录。记录的字段是:姓名、日期和分数,我想按分数对记录进行排序,以便将它们显示在高分表中。我不确定如何实现排序,所以任何帮助都会很棒。谢谢

4

1 回答 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 回答