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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

необходимо отсортировать данные, хранящиеся в типизированном файле по алфавиту

[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 шт., сравнивать и перезаписывать в файл.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

писать надо в другой файл
Изображение
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

А что делает процедура scan? Находит количество элементов в файле? Не проще ли размер файла разделить на sizeof(TTrans)?
Ну, и как правильно сказал Игорь Акопян, выводить надо в другой файл. А потом, если препод требует, из него всю инфу выводить в исходный.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Если записей немного, можно сортировать в памяти.
It's a long way to the top if you wanna rock'n'roll
Ответить