Страница 1 из 1

Сортировка данных в файле

Добавлено: 06 июн 2008, 20:09
Oleg_Rus
необходимо отсортировать данные, хранящиеся в типизированном файле по алфавиту

[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 шт., сравнивать и перезаписывать в файл.

Re: Сортировка данных в файле

Добавлено: 07 июн 2008, 11:51
Игорь Акопян
писать надо в другой файл

Re: Сортировка данных в файле

Добавлено: 07 июн 2008, 11:59
Хыиуду
А что делает процедура scan? Находит количество элементов в файле? Не проще ли размер файла разделить на sizeof(TTrans)?
Ну, и как правильно сказал Игорь Акопян, выводить надо в другой файл. А потом, если препод требует, из него всю инфу выводить в исходный.

Re: Сортировка данных в файле

Добавлено: 10 июн 2008, 09:58
somewhere
Если записей немного, можно сортировать в памяти.