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

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

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

> прокрутка полос стрелками в окне
kess
сообщение 16.03.2007 20:44
Сообщение #1


Новичок
*

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

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


дана задача:По приглашению ввести функцией 0х3F три слова и по нажатию клавиши W вывести их в три строки красного окна размером 10 строк на 30 позиций белыми буквами. По клавишам стрелки вверх и вниз перемещать эти строки внутри данного окна, реализуя при этом полнофунциональное окно с прокруткой (т.е. с выходом строк из окна и их возвращением по стрелкам вверх или вниз)

вот примерный текст:
uses crt,dos,objects;
type ps=^string;arr=array[1..3]of ps;
var regs:Registers;l:ptrrec;

procedure clrscr;
begin regs.ax:=3;intr($10,regs) end;

procedure write(p:ps);
begin l:=ptrrec(p);with regs do begin
ah:=9;ds:=l.seg;dx:=l.ofs+1;
msdos(regs) end;end;

procedure vvod(var ascii,scan:integer);
begin regs.ah:=0;
intr($16,regs);
ascii:=regs.al;scan:=regs.ah end;

procedure read(var p:ps;var len:integer);
begin l:=ptrrec(p);
with regs do begin
ah:=$3F;ds:=l.seg;dx:=l.ofs+1;bx:=0;cx:=80;
msdos(regs);
len:=ax-2;
end;end;


procedure window(f,scroll,color,x1,y1,x2,y2:integer);
begin with regs do begin
ah:=f;al:=scroll;bh:=color;
ch:=y1;cl:=x1;dh:=y2;dl:=x2;
intr($10,regs);end;
end;

procedure cwrite(p:ps;len,color,x,y:integer);
begin
begin l:=ptrrec(p);
with regs do begin
ah:=$13;al:=1;bh:=0;bl:=color;
cx:=len;es:=l.seg;bp:=l.ofs+1;
dh:=y;dl:=x;
intr($10,regs);
y:=y+1;end;
end end;

procedure readkey;
begin regs.ah:=8;
msdos(regs);end;

label again,ende;
var p,q:ps;len,al,ah,x,y,i:integer;my,qq,s:arr;
c:char;

begin clrscr;new(p);new(q);x:=20;y:=5;
p^:='Enter String:$ ';
q^:='GameIsOver';
for i:=1 to 3 do
begin write(p);
new(s[i]);s[i]^[0]:='+';
read(s[i],len);end;
window(6,0,$1F,20,5,60,15);
for i:=1 to 3 do begin
cwrite(s[i],len,$1f,x,y);
y:=y+1; end;
again:vvod(al,ah);
if al=$1B then goto ende;
if ah=72 then if y>5 then begin
y:=y-1;window(6,1,$1F,20,5,60,15);end;
if ah=80 then if y<15 then begin
y:=y+1;window(7,1,$1F,20,5,60,15);end;

goto again;
ende:cwrite(q,10,4,12,16);
readkey
end.

М
Используй, пожалуйста, теги (выделить текст проги, выбрать нужный код в выпадающем меню с CODE)
Lapp

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 9)
Lapp
сообщение 17.03.2007 7:19
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


А в чем вопрос-то? blink.gif
Искать твою проблему тоже самим?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kess
сообщение 17.03.2007 8:20
Сообщение #3


Новичок
*

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

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


Цитата
А в чем вопрос-то?
Искать твою проблему тоже самим?..
нужно сделать прокрутку строк

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


Новичок
*

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

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


как сделать чтобы можно было с помощью стрелок (Вверх-вниз) прокручивать 3 строки внутри данного окна, чтобы выходя за его границу, они не стирались, а возвращались обратно по стрелкам
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kess
сообщение 19.03.2007 18:38
Сообщение #5


Новичок
*

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

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


очень надо (((((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 3.04.2007 21:04
Сообщение #6


Гость






ну неужели ничего нельзя сделать?
 К началу страницы 
+ Ответить 
Andrewshkovskii
сообщение 3.04.2007 21:39
Сообщение #7


Бывалый
***

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

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


А это нормально,то что у тебя процедуры названны зарезервированныим словами?

procedure readkey;
procedure clrscr;
procedure write(p:ps);
procedure window

???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 4.04.2007 14:34
Сообщение #8


Гость






Цитата(Andrewshkovskii @ 3.04.2007 21:39) *

А это нормально,то что у тебя процедуры названны зарезервированныим словами?

procedure readkey;
procedure clrscr;
procedure write(p:ps);
procedure window

???

то писал препод)
 К началу страницы 
+ Ответить 
Гость
сообщение 5.04.2007 19:26
Сообщение #9


Гость






Ребят, помогите.... очень нужно!!
 К началу страницы 
+ Ответить 
Гость
сообщение 11.04.2007 14:45
Сообщение #10


Гость






никто не знает как это сделать?
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 25.06.2025 1:51
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"