S:= FSearch ('EDIT. EXE','C:\DOS;C:\NC;C:\NU');

В текущем каталоге поиск производится автоматически. В случае удачного поиска переменной присваивается строка, содержащая составное имя файла, в случае неудачи – пустая строка.

Список каталогов используется аналогично принятым правилам в DOS. Обычно в файле автозапуска AUTOEXEC. BAT содержится команда PATH, присваивающая этой переменной окружения имена каталогов, в которых находятся наиболее часто используемые файлы. В этом случае поиск файлов из среды DOS производится не только в текущем и корневом каталогах, но и в каталогах, указанных в этой команде.

Чтобы воспользоваться этой переменной, в модуле DOS введена функция

GetEnv (EnvVar:String):String;

где в качестве аргумента используется имя переменной окружения. Так, если в файле автозапуска указана команда

PATH C:\DOS;C:\WINDOWS;C:\NC,

то после выполнения

S := GetEnv ('PATH');

S примет значение

C:\DOS;C:\WINDOWS;C:\NC,

что может являться аргументом функции FSearch.

Из составного имени файла можно отдельно выделить полный путь, чисто имя и расширение процедурой

FSplit (Path:PathStr; Var Dir:DirStr; Var Name:NameStr; Var Ext:ExtStr);

Типы определены как

DirStr = String [67];

NameStr = String [8];

ExtStr = String [4];

Пример поиска файла.

Program PoiskFile;

{ Пример программы поиска файла }

Uses Dos;

Var

NameIn, NameFul:PathStr; { входное и составное имя файла }

Dir:DirStr;

Name:NameStr;

Ext:ExtStr;

Begin

Writeln(' Введите имя искомого файла: ');

Readln(NameIn);

NameFul:=FSearch(NameIn, GetEnv('PATH'));

НЕ нашли? Не то? Что вы ищете?

If NameFul='' then

Writeln('Файл ',NameIn,' не найден')

else

Begin

FSplit(NameFul, Dir, Name, Ext);

Writeln('файл ',Name,' с расширением ',Ext,

' найден в каталоге ',Dir)

end

end.

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

DiskSize (Drive:Byte):LongInt;

– определение общего объема указанного логического устройства (диска) в байтах;

DiskFree (Drive:Byte):LongInt;

– определение количества свободных байт на диске.

Номер диска задается как: 0 – текущий, 1 – А, 2 – С и т. д.

Для работы с текущей датой и временем используются процедуры:

GetDate ( Var Year, Month, Day, Day_of_week: Word);

– определяет текущую системную дату. Здесь Day_of_week определяет порядковый день недели от 0 до 6, причем 0 означает воскресенье.

Аналогично для установки новой даты:

SetDate (Year, Mount, Day:Word);

Процедура для определения системного времени:

GetTime ( Var Hour, Minute, Second, Hund:Word);

Здесь Hund — сотые доли секунды со значением от 0 до 99. Они определяются приблизительно, так как внутренний генератор переключается 18,2 раза в секунду.

Для установки системного времени применяется процедура

SetTime (Hour, Minute, Second, Hund:Word);

Но бо́льшие возможности дает работа непосредственно с процедурами операционной системы и внешними устройствами.

Для работы с прерываниями в модуле DOS предусмотрены две процедуры вызова прерываний.

Intr (IntNo:Byte; Var Regs: Registers);

Здесь:

IntNo – номер прерывания;

Regs – содержимое регистров процессора следующего типа:

Registers = Record

Case integer of

0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags:Word);

1: (AL, AH, BL, BH, CL, CH, DL, DH:Byte);

end;

То есть поля записи соответствуют либо шестнадцатиразрядным, либо восьмиразрядным регистрам процессора. Например, установка графического режима 640х480 точек, 16 цветов:

Var R:Registers;

... ...

R. AH:=0; R. AL:=$12;

Intr ($10,R);

Так как очень часто используется вектор прерывания DOS 21H, то добавлена специальная процедура для работы только с этим прерыванием:

MSDos ( Var Regs:Registers);

полностью эквивалентная

Intr ($21,Regs);

Например, определение версии DOS:

Uses Dos;

Var R:Registers;

... ...

R. AH:=$30;

MSDos ( R );

Writeln ('MS-DOS ',R. AL,'.',R. AH);

... ...

§9.6. Графический режим монитора

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

В настоящее время используются самые разнообразные видеоадаптеры, поддерживающие несколько режимов работы монитора, стандартными из которых считаются:

VGA (Video Graphics Array) с максимальным разрешением 640х480 точек (пикселов);

SVGA (Super VGA) – 800x600;

XGA (eXtended Graphics Array) – 1024x768:

SXGA (Super XGA) – 1280x1024;

UXGA (Ultra XGA) – 1600x1200 и другие.

Более того, в каждом режиме можно отображать разное количество цветов, что существенно зависит от объема видеопамяти. При работе с 16-ю цветами каждая точка занимает полбайта, с 256 – 1 байт, в режиме High Color (более 65 тыс. цветов) – 2 байта, в режиме True Color (более 16 млн. цветов) – 3 байта.

В модуле Graph поддерживается только режим VGA. Здесь можно задавать всего 16 цветов, но три варианта точек по вертикали: 200, 350 и 480, которые задаются режимами: VGALo=0, VGAMed=1, VGAHi=2. Для управления режимом VGA необходимо подключать специальный драйвер, находящийся в файле EGAVGA. BGI (Borland Graphic Interface).

Если программа запускается из DOS, то графический режим надо инициализировать, задав драйвер и его режим в процедуре инициализации:

InitGraph (< драйвер >,< режим >,< путь к драйверу >);

например:

D:=VGA;

R:=VGAHi;

InitGraph (D, R,’’);

Аналогично для восстановления текстового режима используется процедура

CloseGraph;

Удобнее автоматически распознавать используемый адаптер процедурой

DetectGraph (<драйвер>,<режим>);

например

DetectGraph (D, R);

InitGraph (D, R,’’);

В графическом режиме курсор отсутствует. Его функции выполняет невидимый текущий указатель CP (Current Pointer), выполняющий аналогичные функции. Для его перемещения используется процедура

MoveTo (X, Y:Integer);

причем Х для режима Hi может изменяться в диапазоне от 1 до 640, а Y – от 1 до 480.

Для перемещения указателя относительно его последнего положения используется процедура

MoveRel (dX, dY:Integer);

Аналогично текстовому режиму, здесь используется цвет переднего плана и цвет фона, которые устанавливаются процедурами

SetColor (Color:Word);

SetBkColor (Color:Word);

Дополнительно используется процедура заливки для закрашивания фигур и замкнутых областей

SetFillStyle (Pattern:Word; Color:Word);

где Pattern определяет стиль заполнения.

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

Пример построения столбцовой диаграммы двух функций.

Program Diagram;

{ Демонстрационный пример на использование модуля Graph: столбцовая диаграмма функций F1 и F2 }

Uses Crt, Graph;

Const

xmin:real=0.05; { Начальные значения аргумента }

xmax:real=1;

step:real=0.05;

Var x, { текущее значение аргумента }

Fmin, Fmax:real;

stdiag, { ширина большого прямоугольника }

xdiag, { текущая точка диаграммы }

rezim, razm:integer; { режим и разрешение монитора }

stng:string; { временная переменная для преобразования числовых данных при выводе }

Function F1(x:real):real;

Begin

F1:=exp(-x)*sin(x)

end;

Function F2(x:real):real;

Begin

F2:=exp(-sqrt(x))*cos(x);

end;

Begin

{ Поиск экстремумов функции }

x:=xmin;

Fmin:=F1(x);

Fmax:=Fmin;

Repeat

if F1(x)>Fmax then Fmax:=F1(x);

if F2(x)>Fmax then Fmax:=F2(x);

if F1(x)<Fmin then Fmin:=F1(x);

if F2(x)<Fmin then Fmin:=F2(x);

x:=x+step;

until x>xmax;

{ Контроль за масштабом шкалы ординат }

Writeln('min=',Fmin:8:5,' max=',Fmax:8:5);

Read(Fmin, Fmax);

{ Установка графического режима и цветов }

DetectGraph(rezim, razm);

InitGraph(rezim, razm,'');

SetBkColor(Black);

SetColor(White);

{ Заголовок диаграммы }

OutTextXY(220,20,'Диаграмма двух функций');

{ Координатные линии }

Line(44,50,44,451);

Line(44,451,595,451);

{ Масштабы по X и Y - числовые значения }

Str(xmin:4:2,stng);

OutTextXY(44,460,stng);

Str(xmax:4:2,stng);

OutTextXY(570,460,stng);

Str(Fmax:4:2,stng);

OutTextXY(1,50,stng);

Str(Fmin:4:2,stng);

OutTextXY(1,445,stng);

{ Определение расстояния между столбцами }

stdiag:=round(500/((xmax-xmin)/step));

x:=xmin;

xdiag:=45;

{ Вывод в цикле по два столбца }

Repeat

{ F1 - широкий и зеленый столбец }

SetFillStyle(SolidFill, Green);

Bar(xdiag,450,xdiag+stdiag-2,round(450-400*(F1(x)-Fmin)/(Fmax-Fmin)));

{ F2 - красный и узкий столбец }

SetFillStyle(SolidFill, Red);

Bar(xdiag+round(stdiag/4),450,

xdiag+round(stdiag/4*3)-2,round(450-400*(F2(x)-Fmin)/(Fmax-Fmin)));

x:=x+step;

xdiag:=xdiag+stdiag;

until x>xmax;

{ Индицируем результат, пока не будет нажата какая либо клавиша }

Repeat

until KeyPressed;

{ Выход из графического режима }

CloseGraph

end.

Контрольные вопросы

1.  Что такое «модуль»?

2.  Что такое «ресурсы модуля»?

3.  Чем отличается программа от модуля?

4.  Что находится в интерфейсе модуля?

5.  Что находится в реализации модуля?

6.  Для чего предназначен и когда выполняется раздел инициализации модуля?

7.  Какова общая структура модуля?

8.  Как выглядят заголовки подпрограмм в интерфейсной части и в разделе реализации?

9.  Как выполняется подключение модулей к программе?

10.  Как получить доступ к именам модулей при их совпадении?

11.  Что такое «косвенное использование модулей»?

12.  Может ли модуль обращаться сам к себе (рекурсивное обращение)?

13.  Что необходимо предпринять, если имя модуля и имя содержащего его файла не совпадают?

14.  В каком файле находятся стандартные используемые модули?

15.  Какие 5 модулей находятся в стандартном библиотечном файле?

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством