Имеем Типизированный фаил. Работаем последовательным доступом.
Имеется вот такая процедурка вывода ввиде таблички.
procedure vivod2;
var
i:integer;
Begin
clrscr;
i:=0;
assign(spravochnik2,'spravka2');
reset(spravochnik2);
writeln('----------------------------------------------------------------------------');
writeln('№':3,' Табельный ФИО Семейное Количество');
writeln(' Номер сотрудника положение детей ');
writeln('----------------------------------------------------------------------------');
with Zap2 do
while not eof(spravochnik2) do
begin
inc(i);
write(i:3);
read(spravochnik2,Zap2);writeln(TabNom:9,FIOsotr:30,SP:15,Deti:14);
end;
close(spravochnik2);
End;
Погоди... Я по-моему только на днях показывал, как это делается - где-то совсем рядом - там правда по 15 записей надо было... Сейчас покажу, где...
P.S.
Вот оно: http://forum.pascal.net.ru/index.php?showtopic=16471
Распределение большого кол-ва Записей - посмотри на этой странице в этом разделе, я создавал тему с таким же смыслом как и твоя!
Всё хорошо, спасиб большое, но есть НО. Мне желательно нумерацию записей сохранить. Тоесть если я вывожу по 10, а у меня их 15, то на следующей странице он начнёт показ с 11й.
И ещё, Esc какой номер имеет? )
writeln (curr_pos + i,' ',PersonName:10,' ',
Surname:11 ,' ',Education,:13,' ',Post:20,' ',Experience:5,' ',Payment:7:1);
Спасиб, мне показалось, что там не то написано, а когда переписывал у себя поставил просто i )
Спасиб тебе большое, Volvo.
Осталось переделать этот алгоритм для типизированного с последовательным доступом, без сика придётся...
Кстати, мож в ФАК положишь ээтот алгоритм?
Может быть... Надо будет доработать его только ... Я подумаю.
Я смог всё-таки сделать без seek и filepose ))
procedure vivodShapki;
Begin
clrscr;
writeln('----------------------------------------------------------------------------');
writeln('№':3,' Табельный ФИО Семейное Количество');
writeln(' Номер сотрудника положение детей ');
writeln('----------------------------------------------------------------------------');
end;
procedure vivodilka;
var
k,curr_pos,n,p:integer;
refresh:boolean;
Begin
assign(spravochnik2,'spravka2');
reset(spravochnik2);
curr_pos:= 0;
refresh:=true;
while not eof(spravochnik2) do
begin
read(spravochnik2,Zap2);
inc(n);
end;
repeat
if refresh then
begin
reset(spravochnik2);
k:=1;
vivodShapki;
p:=0;
repeat
read (spravochnik2,Zap2);
If k in [curr_pos+1..curr_pos+10] then
with Zap2 do
begin
inc(p);
write(curr_pos+p:3);
writeln(TabNom:9,FIOsotr:30,SP:15,Deti:14);
end;
inc(k);
until (eof(spravochnik2));
refresh:=false;
end;
case ord(readkey) of
80:if curr_pos+10 < n then
begin
inc(curr_pos,10);
refresh:=true;
end;
72:if curr_pos-10>=0 then
begin
dec(curr_pos, 10);
refresh:=true;
end;
13:break;
end;
until false;
close(spravochnik2);
End;
Добавь условие:
case ord(readkey) of
80:if (curr_pos+10 < n) and (not eof(spravochnik2)) then ...
да вроде так должно быть, но не помогло.... Вот доработать бы и можно будет постить в ФАК )