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

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

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

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


Профи
****

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

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


Написал процедурку которая выводит на экран в виде таблицы записи. Прошу вас помоч дополнить её следующим : необходимо, чтобы, при условии, когда количество записей будет больше 15, программа каждые 15 записей выводила в окне window(1,1,80,25) - {я уже подсчитал, это будут координаты окна если записей будет 15}, и при этом переключаться к следующей порции записей можно только нажав клавишу вправо, а вернуться к предыдущей - влево. Очень нуждаюсь в вашей помощи!!
procedure Content (var fails: MyFile; filename: string);
var i: integer; REC: Option; nos: string;
begin
assign (fail, filename);
{$I-}
reset (fail);
{$I+}
CLRSCR;
TextColor (Blue);
Textbackground(White); Clrscr;
TextColor(black);
repeat
read (fail, REC);
end;
with REC do
begin
textcolor (Black);
writeln (i,' ',PersonName:10,' ',Surname:11 ,' ',Education,:13,' ',Post:20,' ',Experience:5,' ',Payment:7:1);
inc (i);
end;
until eof (fail);
close (fail);
textcolor (black);
textbackground(white);
end;


Сообщение отредактировано: Tan -


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


Гость






Алгоритм примерно такой:

curr_pos := 0;
refresh := true;

repeat

if refresh then begin
seek(fail, curr_pos);
i := 1;
repeat
read (fail, REC);
with REC do begin
textcolor (Black);
writeln (curr_pos + i,' ',PersonName:10,' ',
Surname:11 ,' ',Education,:13,' ',Post:20,' ',Experience:5,' ',Payment:7:1);
inc (i);
end;
until (i > 15) or (eof (fail));
refresh := false;

end;

case readkey of
{ клавиша "вправо" }
if curr_pos + 15 < filesize(fail) then begin
inc(curr_pos, 15); refresh := true;
end;
{ клавиша "влево" }
if curr_pos - 15 >= 0 then begin
dec(curr_pos, 15); refresh := true;
end;
{ кнопка "Escape" }
break;
end;

until false;


Присоединишь программу - скажу точнее, как реализовать это...

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


Профи
****

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

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


спасибо, сейчас попробую это осмыслить, если остануться вопросы, то выложу код.


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


Профи
****

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

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


С алгоритмом всё понятно, он даёт даже больше, чем я хотел. Небольшое уточнение : если я использую модули Dos и CRT то главное окощко (то есть весь экран) и будет (1,1,80,25) ? Так как на мой взгляд вопрос касается основного в этой теме, то новую я не стал создавать.

Сообщение отредактировано: Tan -


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


Гость






Вообще-то лучше определять размеры окна в зависимости от того режима, который ты используешь... Например, количество столбцов хранится в байте по адресу: $0:$044A

Если ты уверен, что используется режим именно с 25 строками, а не с 43 или 50, то можно назначить окно и вручную, именно через
Window(1, 1, 80, 25);
 К началу страницы 
+ Ответить 

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

 





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