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

> Правила раздела!

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

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


Новичок
*

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

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


Я не так давно программирую на Паскале. В некоторых программах встречается некая фишка. Смена экранов по нажатию клавиши. Но если нажимаешь Enter, стрелки и т.п., проскакивает сразу два экрана. Когда давно я читал про Бейсик, там говорилось что управляющие клавиши генерируют код в 2 байта. Предпологаю это и есть причина. Если нет, то подскажите ее (причину) и если не трудно как сделать обработку нажатия простых и упр. кнопочек.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Alexn

Эта тема уже рассматривалась
здесь ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Спасибо volvo за ссылку. Пытаюсь тут написать нечто подобное Volcov Com. Рамки нарисовал, командную строку просто по write('C:\>') написал. Если кто знает, дайте ссылку где взять описание DOS.TPU (желать-но по RUS). Ну а если нет будем дальше мучать BPW.HLP smile.gif.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Здесь есть переведенный на русский язык файл помощи TURBO.TPH для ТР 70

Можешь также посмотреть здесь ...

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


Автооответчик
*****

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

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


а еще можешь задавать вопросы на форуме rolleyes.gif


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Хотелось бы чего-нибуть по подробнее и с примерами. Я не придираюсь (всем спасибо) просто я не могу разобраться при простом перечислении процедур и функций в книгах. В turbo.tph нет описания DOS только WinDos. По первой ссылке прочитал, что строка там заканччивается 0. На http://zerodivide.narod.ru есть Паскаль (Light 5??.0 Kb) модули и встроеный асм.
Улобная штука, влазит на дискету (я ее на работе по всем компам распихал smile.gif ), с этим русским файлом помощи. (Если кому надо). Ну если никто не знает подробных описаний Дос, может подскажете как вывести список файлов и каталогов (и почему это работает). В ВР есть файл dirdemo, но новые переменные (да все новое). Вот, че то расписался. Вобщем буду благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


И еще вопросик (надо-бы конечно самому доходить blink.gif ).
Делаю два окна window(1,1,40,20); window(41,1,80,20);.
Можно ли переключиться на первое (сделаать его активным). Если да то как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
как вывести список файлов и каталогов



Код

uses dos;

{ Процедура показывает содержимое диска по шаблону Where }
Procedure ShowDisk(Where: string);
 Type
   attrType = (RO, Hid, Sys, Vol, Dir, Arc);
 Const
   attrText: Array[attrType] Of Char =
     ('R', 'H', 'S', 'V', 'D', 'A');
   attrVal: Array[attrType] Of Byte =
     (1, 2, 4, 8, 16, 32);
 Var
   sRec: SearchRec;
   i: attrType;

 Begin
   If Where = '' Then
     Where := '*.*';

   { Найти первый подходящий файл среди файлов заданного типа (AnyFile)
      Результаты сохраняются в записи sRec }
   FindFirst(Where, AnyFile, sRec);

   { Пока файлы находятся (если больше подходящих файлов не найдено,
      DosError примет ненулевое значение) }
   While DosError = 0 Do
     Begin
       Write(sRec.name:15, sRec.size:10);

       { Распечатывается атрибут файла... }
       For i := RO To Arc Do
         If (sRec.Attr and attrVal[i]) = attrVal[i]
           Then Write(attrText[i]) Else Write('.');
       WriteLn;

       { Ищется следующий файл по тому же шаблону, который задан в FindFirst }
       FindNext(sRec);
     End;

 End;

Begin
 ShowDisk('F:\*.*');
End.


Цитата
почему это работает
blink.gif

Потому что это должно работать.

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


Гость






Кстати, об этом:

Цитата
Можно ли переключиться на первое (сделаать его активным)


Не помню, есть ли он в ТР 70, но в пятой версии языка точно был модуль WIN.TPU, который значительно облегчал работу с окнами... Там для переключения между окнами уже были готовые процедуры. (Если нужно, могу скинуть...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Цитата
(Если нужно, могу скинуть...)


Скинь на 123_456_2004@mail.ru, вот только как я смогу пользоваться модулем если я не знаю какие в нем процедуры, функции, константы и переменные.

А в CRT.TPU нельзя работать с окнами кроме как создавать, да?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Цитата
не знаю какие в нем процедуры, функции, константы и переменные.


Я тебе скинул модуль вместе с исходниками и демо-программой...

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


Бывалый
***

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

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


я когда-то писал нечто подобное, лет 7 назад... а потом то же самое с Vesa-графикой... сделано там правда только перемещение по файлам и каталогам... если надо, могу выложить сюда.

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

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


Новичок
*

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

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


P@sh@
Если не трудно, напиши небольшой пример использования переменной active.
Цитата
если надо, могу выложить сюда.

Буду благодарен.

Ну а вот то, ради чего все начиналось:
Код

uses crt;

var i:integer;

procedure polosa(x1,x2:integer);
var c:integer;
begin
for c:=x1+1 to x2-1 do
   write('═')
end;

procedure Ramka1(x1,x2,y1,y2:integer);
var z:integer;
begin
GotoXY(x1,y1);
write('╔');
polosa(x1,x2);
write('╗');
GotoXY(x1,y1+1);
for z:=y1+1 to y2-2 do
   begin
   gotoxy(x1,z);
   write('║');
   write('║':x2-x1);
   end;
gotoxy(x1,z+1);
write('╚');
polosa(x1,x2);
write('╝');
end;

begin
textbackground(blue);
clrscr;
ramka1(1,40,1,24);
ramka1(41,80,1,24);

gotoxy(20,1);
write('╤');
for i:=2 to 22 do begin gotoxy(20,i); write('│') end;
gotoxy(20,23); write('╧');

gotoxy(1,25);
textbackground(11);
clreol;
write('1 HELP  2 MENU  3 VIEW  4 EDIT  5 COPY  6 RENMOV 7 MKDIR 8 DELET 9 CONF 10 EXIT');

gotoxy(1,24);
textbackground(0);
clreol;
write('C:\>');
readln;
end.


Можете критиковать (хотя там критиковать-то еще нечего).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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