Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль.doc
Скачиваний:
58
Добавлен:
07.06.2015
Размер:
1.21 Mб
Скачать

23.2. Модуль dos

Модуль обеспечивает связь программы с MS DOS и содержит более 20 процедур и функций. Наиболее часто используются следующие из них.

1) GetTime(H,M,S,S100); – процедура; возвращает установленное в операционной системе текущее время в виде: H – часы (0..23), M – минуты (0..59), S – секунды (0..59), S100 – сотые доли секунды (0..99). Все переменные процедуры имеют тип Word.

2) GetDate (Y,M,D,DW); – процедура; возвращает установленную в операционной системе текущую дату в виде: Y – год (1980..2099), M – месяц (1..12), D – день (1..31), DW - день недели (0..6, где значению "0" соответствует воскресенье). Все данные выходные и имеют тип Word.

Пример.

GetTime(H,M,S,S100);

Writeln (’Текущее время: ’, H,’ часов ’, M,’ минут ’,

S,’ секунд’);

GetDate(Y,M,D,DW);

Writeln(’Текущая дата: ’,D,’.’,M:2,’.’,Y:4);

Модуль DOS позволяет запустить из Паскаль-программы другую программу по командной строке DOS, посмотреть атрибуты файла (время создания, имя, тип и т.д.), объем дисковой памяти (общей и свободной) и выполнять другие команды MS DOS.

23.3. Модуль Graph

Модуль представляет собой библиотеку более чем из 50 графических процедур, которые позволяют рисовать простейшие графические изображения (примитивы): линии, окружности, прямоугольники и т.д. Он обеспечивает использование в полной мере графических возможностей компьютера. Работает с графическими драйверами вида

тип_видеокарты.bgi.

Пример. Egavga.bgi – для видеокарт VGA и EGA или

Svga256m.bgi - для видеокарты SVGA.

Драйвер VGA поддерживает три цветовых режима с 16-ю цветами каждый:

VGALo число точек на экране – 640х200; 4 страницы видеопамяти.

VGAMed число точек на экране 640х350; 2 страницы видеопамяти.

VGAHi число точек на экране 640х480; 1 страница видеопамяти.

Изображение формируется в видеопамяти. Для этого используют от 1 до 4 страниц. В каждый момент времени только одна страница является видимой (передающей изображение на экран). Еще одна страница может быть активной и использоваться для формирования нового изображения. Эти страницы могут быть разными или совпадать. Такой подход ускоряет формирование и смену изображений на экране.

Модуль Graph использует также драйверы шрифтов вида

название_шрифта.chr.

для вывода надписей.

23.3.1. Инициирование графического режима

Графический режим – это особый режим вывода на экран. Он является альтернативой текстовому режиму и отменяет его. Вначале графический режим обязательно должен быть запущен (инициирован), а в конце работы с ним – закрыт. Для этого используют следующие процедуры и функции.

1) Процедура InitGraph(Var grDr,grMd:integer;path:string);

Здесь grDr – графический драйвер,

grMd – графический режим (mode), допустимый для этого драйвера;

Path – полное имя каталога, в котором находятся графические драйверы. Если этот параметр задается пустой строкой (т.е. ’’), то подразумевается, что файлы драйверов находятся в текущем каталоге. Первые два параметра являются параметрами-переменными и должны быть объявлены в описании переменных.

Перед инициированием графического режима необходимо задать тип используемого драйвера. Это можно сделать самим или определить автоматически.

Пример. grDr : = Detect; - драйвер определяется автоматически или

grDr : = Vga; - задан тип драйвера Vga.

Система координат в графическом режиме определяется как это показано на рис. 30. Верхний левый угол экрана имеет координату (0,0). Координаты других крайних точек зависят от установленного драйвера (GrDr) и выбранного режима его работы (GrMd).

2) Функция GraphResult; аргументов нет. Возвращает код ошибки для последней выполненной графической операции (в том числе и InitGraph, и DetectGraph). Тип результата – целый.

Определены более десяти кодов ошибок. Если ошибки нет, то функция GraphResult возвращает код, равный 0 (соответствующая константа – GrOk). В противном случае возвращаемый код не равен 0.

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

Пример. WriteLn(’Ошибка графики, код: ’,ErCode,’. ’,GraphErrorMsg(ErCode));

3) Процедура CloseGraph; – закрывает графический режим и восстанавливает исходный текстовый режим экрана, освобождает память, занимаемую графическим драйвером.

Таким образом, в программе, работающей с модулем Graph должны быть фрагменты вида

Program...

Uses

graph;

.....

Var

grDr ,grMd,Er:integer;

......

Begin

grDr := Detect;{автоматическое определение драйвера}

InitGraph(grDr,grMd,’’);{драйвер в текущем каталоге}

Er := GraphResult; { Код ошибки }

If Er=grOk then

Begin { Графический режим }

.....

CloseGraph;

End

Else

WriteLn(’Ошибка графики: ’,Er,’. ’,GraphErrorMsg(Er));

.....

end.

Графический режим может быть переключен на текстовый и обратно следующим образом.

Begin

{Графический режим}

.......

RestoreCrtMode; { переход в текстовый режим Crt }

.......

SetGraphMode(grMd); { Снова графический режим }

.......

end;