Сайт Льва Волкова
  
Было бы сердце, а печали найдутся. В.О. Ключевский
 
      На главную  
 Личное
  Статьи
  Задачи 
 Ссылки
 АТ-531
www.levvol.ru    
 
Процедуры и функции модуля CRT
AssignCRT(var f:text);

Процедура, связывающая текстовый файл с устройством CRT- монитором. Работает точно также как стандартная файловая процедура Assign, за исключением того, что путь к файлу (физическое имя файла) не указывается.


ClrEol;

Процедура. Стирает все символы от позиции курсора до конца строки. Курсор при этом остается на месте. Все позиции символов заполняются пробелами.


ClrScr

Процедура. Очищает экран (окно) и помещает курсор в левый верхний угол экрана (окна). При этом используется текущее определение текстовых атрибутов. Эта процедура относительно медленная. Например, при создании "бегущей" строки можно печатать строку в данной позиции экрана, задерживать её, стирать экран, печатать строку в новой позиции, но это не оптимально - не экране будет "дерганье". В примере 1 на этой странице приведена программа с "бегущей" строкой.


Delay(Msec:word)

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


DelLine

Процедура. Удаляет строку, на которой находится курсор. Все строки, расположенные ниже этой строки, перемещаются на одну строку вверх. В примере 2. приведена программа постраничного табличного вывода: на экране имеется шапка таблицы, под ней выводятся данные до конца экрана, после нажатия клавиши Enter данные под шапкой таблицы стриаются и выводится следующая страница и т.д.


HighVideo

Процедура. Устанавливает для символов повышенную яркость. Устанавливает для цвета символов переменной TextAttr бит яркости 1. Таким образом, цвета 0..7 отображаются в цветах 8..15.


InsLine

Процедура. Начиная с позиции курсора вставляет пустую строку. Все строки, расположенные ниже добавляемой строки, перемещаются вниз на одну строку, нижняя строка изчезает с экрана.


GotoXY(x,y:byte)

Процедура. Позиционирует курсор в точку с заданными координатами. Курсор перемещается в ту позицию внутри текущего окна, которая заданна координатами x, y (x-задает столбец, y- задает строку). Верхний левый угол задается координатами (1,1).
     Если задаются недопустимые координаты, то обращение к процедуре игнорируется.


KeyPressed:boolean

Функция. Возвращает значение True, если на клавиатуре нажата клавиши и False в противном случае. Функция не распознает клавиши перевода регистра: shift, alt, numlock и т.п. Обычно используется в цикле с постусловием:

repeat
.........
until KeyPressed;


LowVideo

Процедура. Устанавливает для символов пониженную яркость. Устанавливает для цвета символов переменной TextAttr бит яркости 0. Таким образом, цвета 8..15 отображаются в цветах 0..7.


Пример 1.

 Program Test1;
 {"Бегущая" строка}
  Uses CRT;
  Const s='Бегущая строка';
  Var x:integer;
  Begin
  ClrScr; TextColor(yellow);
  for x:=1 to 80 do begin  {
  {желтые полоски, между которыми будет "бежать" строка}
  GotoXY(x,4); write('-');
                    end;
  for x:=1 to 80 do begin {нижная полоска}
  GotoXY(x,6); write('-');
                    end;
     repeat
    for x:=80-length(s) downto 2 do 
 {строка "бежит" справа налево, появляясь справа вся сразу}
      begin
      GotoXY(x,5); {курсор в данной позиции}
	   TextColor(white); {цвет символов - белый}
	   write(s); {выводим строку}
      delay(30000); 
	   {задержка - подбирается опытным путем}
       GotoXY(x,5); TextColor(black); write(s); 
      {тоже, но строка печатается черным цветом 
       на черном фоне, т.е. стирается}
      end;
      delay(30); 
	  {задержка - подбирается опытным путем}
      until KeyPressed 
	  {"бег" повторяется, пока не нажата клавиша Enter 
	  (сработает, когда строка в левом положении)}
      End.


Пример 2.

Постраничный вывод данных:

Program Test2;
{Постраничный вывод}
 Uses CRT;
  Var yg:integer;
      x,y:real;
 Begin
 ClrScr;
 writeln('Table');
 {Шапка таблицы всегда на месте}
 writeln('--------------------------------');
 writeln('    X        :   Y=X-Sin(X)');
 writeln('--------------------------------');
 x:=0; yg:=5; {Вывод данных с 5-й строки}
  while (x<=8*pi) do begin
    y:=x-sin(x);
    writeln(x:5:2,'           ',y:5:2);
    yg:=yg+1;
    if (yg>24) then begin {Достигли 24-й строки}
		    yg:=24; GotoXY(1,25); write('Нажмите Enter'); 
			readln;
		    while yg>=5 do begin {Стирание снизу-вверх}
		    GotoXY(1,yg);
		    Delline;
		    yg:=yg-1;
end;
GotoXY(1,5);    yg:=5;
		   end;
      x:=x+0.1;
      end;
  readln
  End.
 


NoSound

Процедура. Выключает встроенный динамик.


ReadKey: Char

Считывает символ с клавиатуры, не отображая его на экране. Если перед обращением к функции ReadKey функция KeyPressed имела значение True, символ считывается немедленно, в противном случае функция ожидает нажатия клавиши.

Специальные клавиши (функциональные клавиши, клавиши управления курсором, клавиши Alt и т.д.) генерируют расширенные коды. При нажатии специальной клавиши функция ReadKey возвращает сначала нулевой символ (#0), а затем расширенный код клавиши.

Пример 3.

Program Test3;
 {Коды клавиш}
  Uses CRT;
  Var c1,c2:char;
  Begin
  ClrScr;
  repeat
   c1:=ReadKey;
   if c1=#0 then c2:=ReadKey;
     if c1=#0 then writeln(ord(c1):5, ord(c2):5)
	       else writeln(ord(c1):5)
  until (c1=#0) and (c2=#3) 
    
  {Нажатие комбинации клавиш CTRL+2 
   прекращает работу программы}
  End. 			  


Sound(Herz:word);

Включает встроенный динамик с частотой Herz в герцах.

Пример 4.

Program Test4;
 {Демонстрация звукового эффекта}
  Uses CRT;
 {телефонный сигнал}
  Var i:word;
   Begin
    repeat
	  for i:=1 to 100 do begin
	    Sound(1200); Delay(10); NoSound;
		                 end;
	Delay(800);
	 {параметры задержки
	 подбираются индивидуально}
	Until KeyPressed
	End.		
	

TextBackGround(Color: byte)

Процедура. Устанавливает фоновый цвет Color - выражение целого типа в диапазоне от 0 до 7.


TextColor(Color: byte)

Процедура. Устанавливает цвет символа Color - выражение целого типа в диапазоне от 0 до 15.


TextMode(Mode: integer)

Процедура. Устанавливает указанный текстовый режим.


WhereX: byte

Функция. Возвращает координату X текущей позиции курсора относительно текущего окна.


WhereY: byte

Функция. Возвращает координату Y текущей позиции курсора относительно текущего окна.


Window(X1, Y1, X2, Y2: byte)

Процедура. Определяет на экране текстовое окно. Параметры X1, Y1 - координаты левого верхнего угла окна, X2, Y2 - координаты правого нижнего угал. В 80-симовльных режимах по умолчанию определяется окно (1,1,80,25), а в 40-символьных режимах - (1,1,40,25), что соответсвует всему экрану. Пример применения этой процедуры - окно с тенью.

Пример 5.

Program Test5;
Uses CRT;
 Begin
 TextBackGround(blue);
 ClrScr;
  {Устанавливаем цвет фона -синий}
 Window(20,10,60,15);
 TextBackGround(black);
 ClrScr;
  {Рисуется окно - тень черного цвета}
 Window(19,9,59,14);
 TextBackGround(cyan);
 ClrScr;
  {Рисуется основное окно со смещением 
 влево - вверх. Цвет этого окна - cyan}
 TextColor(blue);
 GotoXY(15,4); writeln('Текст внутри окна');
  {Вывод текста внутри окна}
 Window(1,1,80,25);
  {Выход из окна на весь экран}
 TextBackGround(blue);
 TextColor(yellow);
 writeln('Этот текст печатается в верхней левой
  части жкрана желтым цветом');
 readln
 End.

вверх страницы

 

[назад] [содержание] [вперед]