Сортировка данных в файле
Добавлено: 06 июн 2008, 20:09
необходимо отсортировать данные, хранящиеся в типизированном файле по алфавиту
[syntax='delphi']
function Scan: LongInt;
var i: integer;
T1: TTrans;
begin
i:=0;
Assign(f, FileName);
Reset(f);
While not EOF(f) do
begin
Read(f, T1);
inc(i);
end;
Scan:= i;
Close(f);
end;
procedure Sort;
var count, j, n, k, s, i, poscurold, poscurnew, rr: integer;
begin
rr:=Scan;
Assign(f, FileName);
Reset(f);
For j:=1 to rr do
For k:=1 to rr-1 do
begin
Read(f, T1);
PosCurOld:= FilePos(f);
T2:=T1;
Read(f, T2);
PosCurNew:= FilePos(f);
if Length(T1.Eng)>length(T2.Eng) then count:=Length(T1.Eng) else
count:=Length(T2.Eng);
for i:=1 to Count do
begin
if T1.Eng<T2.eng then
begin
Seek(f, PosCurOld);
Write(f, T2);
Write(f, T1);
end;
end;
Seek(f, PosCurNew);
end;
Close(f);
end;
[/syntax]
я так понял, что надо посчитать кол-во записей в файле, затем читать их по 2 шт., сравнивать и перезаписывать в файл.
[syntax='delphi']
function Scan: LongInt;
var i: integer;
T1: TTrans;
begin
i:=0;
Assign(f, FileName);
Reset(f);
While not EOF(f) do
begin
Read(f, T1);
inc(i);
end;
Scan:= i;
Close(f);
end;
procedure Sort;
var count, j, n, k, s, i, poscurold, poscurnew, rr: integer;
begin
rr:=Scan;
Assign(f, FileName);
Reset(f);
For j:=1 to rr do
For k:=1 to rr-1 do
begin
Read(f, T1);
PosCurOld:= FilePos(f);
T2:=T1;
Read(f, T2);
PosCurNew:= FilePos(f);
if Length(T1.Eng)>length(T2.Eng) then count:=Length(T1.Eng) else
count:=Length(T2.Eng);
for i:=1 to Count do
begin
if T1.Eng<T2.eng then
begin
Seek(f, PosCurOld);
Write(f, T2);
Write(f, T1);
end;
end;
Seek(f, PosCurNew);
end;
Close(f);
end;
[/syntax]
я так понял, что надо посчитать кол-во записей в файле, затем читать их по 2 шт., сравнивать и перезаписывать в файл.