IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Скролинг, вывод файла с большим кол-вом записей
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Имеем Типизированный фаил. Работаем последовательным доступом.

Имеется вот такая процедурка вывода ввиде таблички.

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;




Проблема: Если записей будет более 20 что ли...то в итоге паскаль выводит на экран только последние несколько записей, при этом не видна шапка. Как я понял лучше шапку выделить в отдельную процедуру. А вот с самим выводом как быть? хочется, чтобы он прокручивался по нажатию на стрелочки вниз-вверх
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Погоди... Я по-моему только на днях показывал, как это делается - где-то совсем рядом - там правда по 15 записей надо было... Сейчас покажу, где...

P.S.
Вот оно: Распределение большого кол-ва Записей

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Распределение большого кол-ва Записей - посмотри на этой странице в этом разделе, я создавал тему с таким же смыслом как и твоя!


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Всё хорошо, спасиб большое, но есть НО. Мне желательно нумерацию записей сохранить. Тоесть если я вывожу по 10, а у меня их 15, то на следующей странице он начнёт показ с 11й.

И ещё, Esc какой номер имеет? )

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
И ещё, Esc какой номер имеет? )


#27


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Тоесть если я вывожу по 10, а у меня их 15, то на следующей странице он начнёт показ с 11й.


Цитата
writeln (curr_pos + i,'  ',PersonName:10,'   ',
Surname:11 ,' ',Education,:13,' ',Post:20,' ',Experience:5,' ',Payment:7:1);
Тут как раз этим и занимается curr_pos + i... Так и задумывалось...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Спасиб, мне показалось, что там не то написано, а когда переписывал у себя поставил просто i )
Спасиб тебе большое, Volvo.

Осталось переделать этот алгоритм для типизированного с последовательным доступом, без сика придётся...
Кстати, мож в ФАК положишь ээтот алгоритм?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Может быть... Надо будет доработать его только ... Я подумаю. smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Я смог всё-таки сделать без 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;




Пашет, но есть 1 нюанс: когда он выведит последнию страницу с записями, то дальше можно будет листать, но будут пустые листы...вот как бы это заблочить?

Сообщение отредактировано: Renbo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Добавь условие:

case ord(readkey) of
80:if (curr_pos+10 < n) and (not eof(spravochnik2)) then ...


Это должно дать необходимый тебе эффект, если я не ошибаюсь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


да вроде так должно быть, но не помогло.... Вот доработать бы и можно будет постить в ФАК )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.05.2021 1:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name