Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Распределение большого кол-ва Записей

Автор: Tan 4.04.2007 15:30

Написал процедурку которая выводит на экран в виде таблицы записи. Прошу вас помоч дополнить её следующим : необходимо, чтобы, при условии, когда количество записей будет больше 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;

Автор: volvo 4.04.2007 15:45

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

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;


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

Автор: Tan 4.04.2007 16:11

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

Автор: Tan 4.04.2007 17:53

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

Автор: volvo 4.04.2007 19:04

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

Если ты уверен, что используется режим именно с 25 строками, а не с 43 или 50, то можно назначить окно и вручную, именно через

Window(1, 1, 80, 25);

Автор: buy azithromycin or ceftriaxone 16.09.2021 5:27

Cheap Seroquel No Prescription

Автор: purchase hydroxychloroquine sulf 4.12.2021 3:49

Clomid Acide Folique Je

Автор: promethazine without prescriptio 5.12.2021 1:50

Buy Kamagra Fast Delivery