Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
ВнизСортировка файла по дате Найти похожие ветки
← →
Zhanna (2009-11-12 16:19) [0]Здравствуйте! Помогите пожалуйста осуществить сортировку файла по дате методом Шелла. У меня сортируется только по дню или вообще выдает сообщение об ошибке...
← →
Сергей М. © (2009-11-12 16:38) [1]И чем же тебе помочь ?
← →
Zhanna (2009-11-12 16:41) [2]Здравствуйте. Проблема в том что я не понимаю что делаю. если я выложу текст процедуры вы можете сказать где ошибки?
← →
MBo © (2009-11-12 16:42) [3]если не выложишь, то уж точно ничего сказать не сможем
← →
Zhanna (2009-11-12 16:43) [4]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;
← →
Zhanna (2009-11-12 16:48) [5]Знаю что все жутко. Но хоть что-то скажите
← →
Сергей М. © (2009-11-12 16:53) [6]
> 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;
А это что за непонятный огрызок от цикла ?
Где сам цикл-то ?
← →
MBo © (2009-11-12 16:58) [7]Предположительно в файле находятся некие записи.
Их нужно прочитать в массив, и массви отсортировать по нужному полю.
Что именно не получается?
← →
Zhanna (2009-11-12 17:02) [8]а разве я не могу добавить 100 записей в файл? почему while not честно не знаю. а последнее это мои догадки по поводу того как сделать чтобы сортировка шла отдельна по дням,месяца и годам но куда это примкнуть не знаю...
← →
Zhanna (2009-11-12 17:03) [9]не получается то что я не знаю как это сделать. простите за тупость. я дергаю куски из разных программ. и как следствие нулевой результат.
← →
Сергей М. © (2009-11-12 17:07) [10]
> разве я не могу добавить 100 записей в файл?
Можешь.
Хоть миллион.
While not EOF() с таким количеством справится, а вот как ты собралась прочитав из файла этот миллион запихать его в массив размером в 100 (!) записей ?
← →
Zhanna (2009-11-12 17:12) [11]я не совсем поняла вопрос. у меня будет где то 20-50 записей. я думала что все уместится...
← →
Zhanna (2009-11-12 17:16) [12]Сергей, я скажу прямо большую часть процедуры я не понимаю. поэтому вопросы как ты собиралась ставят меня в тупик. если можно просто скажите что удалить а что исправить. и если можно почему. но это уже наверное непозволительная роскошь?
← →
MBo © (2009-11-12 17:18) [13]Для начала нуже ликбез
http://www.delphikingdom.ru/lyceum/seminar.asp?ID=2
а именно:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=843
← →
Zhanna (2009-11-12 17:22) [14]Я не знаю что такое ликбез. что это?но то что есть на ссылке очень похоже на мою программу.
← →
Сергей М. © (2009-11-12 17:27) [15]
> думала что все уместится
> думала что все уместится
А вот не надо делать таких предположений, даже если задача учебная.
У тебя же есть размер файла
n:=filesize(F_biblioteka);
Подели его на размер одной записи и установи размер (см. SetLength) массива m равным полученному значению, заменив оъявление этого массива на
m: array of TDate; //т.е. сделав этот массив динамическим
Теперь в for-цикле для j от 0 до Length(m)-1 читай из файла записи и заполняй элементы массива:
m[j] := StrToDate(B.data); //предполагая что дата в файле фигурирует в строковом формате ДД.ММ.ГГГГ
← →
Сергей М. © (2009-11-12 17:28) [16]
> не знаю что такое ликбез
ЛИКвидация БЕЗграмотности
← →
Zhanna (2009-11-12 17:35) [17]О ДА. спасибо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c