![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка файла по дате
Zhanna © (2009-11-12 16:19:00)Здравствуйте! Помогите пожалуйста осуществить сортировку файла по дате методом Шелла. У меня сортируется только по дню или вообще выдает сообщение об ошибке...
Zhanna (2009-11-12 17:35:00) [1]О ДА. спасибо
Сергей М. (2009-11-12 17:28:00) [2]
> не знаю что такое ликбез
ЛИКвидация БЕЗграмотности
Сергей М. (2009-11-12 17:27:00) [3]
> думала что все уместится
> думала что все уместится
А вот не надо делать таких предположений, даже если задача учебная.
У тебя же есть размер файла
n:=filesize(F_biblioteka);
Подели его на размер одной записи и установи размер (см. SetLength) массива m равным полученному значению, заменив оъявление этого массива на
m: array of TDate; //т.е. сделав этот массив динамическим
Теперь в for-цикле для j от 0 до Length(m)-1 читай из файла записи и заполняй элементы массива:
m[j] := StrToDate(B.data); //предполагая что дата в файле фигурирует в строковом формате ДД.ММ.ГГГГ
Zhanna (2009-11-12 17:22:00) [4]Я не знаю что такое ликбез. что это?но то что есть на ссылке очень похоже на мою программу.
MBo (2009-11-12 17:18:00) [5]Для начала нуже ликбез
http://www.delphikingdom.ru/lyceum/seminar.asp?ID=2
а именно:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=843
Zhanna (2009-11-12 17:16:00) [6]Сергей, я скажу прямо большую часть процедуры я не понимаю. поэтому вопросы как ты собиралась ставят меня в тупик. если можно просто скажите что удалить а что исправить. и если можно почему. но это уже наверное непозволительная роскошь?
Zhanna (2009-11-12 17:12:00) [7]я не совсем поняла вопрос. у меня будет где то 20-50 записей. я думала что все уместится...
Сергей М. (2009-11-12 17:07:00) [8]
> разве я не могу добавить 100 записей в файл?
Можешь.
Хоть миллион.
While not EOF() с таким количеством справится, а вот как ты собралась прочитав из файла этот миллион запихать его в массив размером в 100 (!) записей ?
Zhanna (2009-11-12 17:03:00) [9]не получается то что я не знаю как это сделать. простите за тупость. я дергаю куски из разных программ. и как следствие нулевой результат.
Zhanna (2009-11-12 17:02:00) [10]а разве я не могу добавить 100 записей в файл? почему while not честно не знаю. а последнее это мои догадки по поводу того как сделать чтобы сортировка шла отдельна по дням,месяца и годам но куда это примкнуть не знаю...
MBo (2009-11-12 16:58:00) [11]Предположительно в файле находятся некие записи.
Их нужно прочитать в массив, и массви отсортировать по нужному полю.
Что именно не получается?
Сергей М. (2009-11-12 16:53:00) [12]
> m:array[1.. 100] of integer;
С чего ты взяла, что в файле 100 строк ?
А если даже и так, то почему while not eof(f_biblioteka) ?
> begin
> t:=B.data;
> m[j]:=StrToInt(copy(t,7,4)+copy(t,4,2)+copy(t,0,2));
>
>
> end;
А это что за непонятный огрызок от цикла ?
Где сам цикл-то ?
Zhanna (2009-11-12 16:48:00) [13]Знаю что все жутко. Но хоть что-то скажите
Zhanna (2009-11-12 16:43:00) [14]procedure Tform2.Sort_bibl ;
var
h,j,i,n,k,ch_s,ch_per,ch_s1,ch_s2,v,sd:integer;
t:string[10];
m:array[1..100] of integer;
buf:biblioteka;
label met;
begin
k:=0;ch_s:=0; ch_per:=0; ch_s1:=0; ch_s2:=0;
reset(F_biblioteka);
n:=filesize(F_biblioteka);
while not eof(f_biblioteka) do
begin
seek(f_biblioteka,k);
read(f_biblioteka,B);
//m[k+1]:=B;
inc(k);
end;
begin
t:=B.data;
m[j]:=StrToInt(copy(t,7,4)+copy(t,4,2)+copy(t,0,2));
end;
closefile(f_biblioteka);
{Метод Щелла}
h:=n div 2;
while h<>0 do begin
for j:=h+1 to n do
begin
i:=j-h;
v:=m[j];
repeat
if v>=m[i] then goto met
else
begin
buf:=m[i+h];
m[i+h]:=m[i];
m[i]:=buf;
i:=i-h;
ch_per:=ch_per+1;
ch_s1:=ch_s1+1;
end;
until i<=0;
met:
ch_s2:=ch_s2+1;
end;
h:=h div 2;
ch_s:=ch_s1+ch_s2;
end;
rewrite(f_biblioteka);
for i:=0 to n-1 do
begin
seek(f_biblioteka,i);
write(f_biblioteka);
end;
end;
MBo (2009-11-12 16:42:00) [15]если не выложишь, то уж точно ничего сказать не сможем
Zhanna (2009-11-12 16:41:00) [16]Здравствуйте. Проблема в том что я не понимаю что делаю. если я выложу текст процедуры вы можете сказать где ошибки?
Сергей М. (2009-11-12 16:38:00) [17]И чем же тебе помочь ?