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

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

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

> Спец. клавиши, код в 2 байта
Alexn
сообщение 3.11.2004 8:45
Сообщение #1


Новичок
*

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

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


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


Гость






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



Код

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 - 4.11.2004 9:54
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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