Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

3.5 Модули в Паскале

____________________________________________________________________

n: integer; begin

s:= x; t:= x; n:= 2; eps:= 1e-7; repeat

t:= -t * (sqr(x)/(n * (n + 1))); s:= s + t;

n:= n + 2; until abs(t)< eps;

No_standard_sin:= s; end;

end.

Сохраните модуль обязательно с тем же именем, что указан в заголовке модуля, т.е. my_module.pas в какой-нибудь папке. Откомпилируйте модуль на-

жав клавиши Ctrl+F9 или меню Запуск-> Собрать. Для каждого модуля созда-

ются два файла: двоичный файл описания модуля с расширением (.ppu) и объ-

ектный с расширением (.o). Таким образом, в вашей папке создадутся два файла my_module.ppu и my_module.o

Создайте консольное приложение и введите текст программы:

program project_with_my_module; {$mode objfpc}{$H+}

uses

CRT, FileUtil,SysUtils, my_module; // указываем имя модуля var x, y, dx: real;

begin x:= 0;

dx:= 0.1; while x <= 1 do

begin

216

Глава 3 Более сложные элементы языка

____________________________________________________________________

y:= No_standard_sin(x);

writeln('x= ', x:0:1, ' y= ', y:0:7,

' sin(x)= ', sin(x):0:7);

x:= x + dx;

end;

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Сохраните проект в той же папке, где вы сохранили модуль или скопируй-

те файлы my_module.ppu и my_module.o в папку с текущим проектом. Нажмите клавишу F9. Начнется компиляция и сборка (компоновка) программы. На этапе сборки ваш модуль будет автоматически добавлен в исполняемую программу.

После выполнения программы вы получите те же самые результаты, что и в разделе 3.1.1.3.

Если вы хотите, чтобы ваш модуль был доступен и в других программах,

то проще всего поступить следующим образом:

1.Создайте папку, например с именем my-units

2.Перенесите в эту папку файлы my_module.ppu и my_module.o;

3. Скопируйте саму папку my-units в системный каталог

"C:\lazarus\fpc\2.2.4\units\i386-win32" если вы работаете в Windows или в ката-

лог "/usr/lib/fpc/2.2.4/units/i386-linux", если вы работаете в Linux.

Теперь ваш модуль будет автоматически подключаться в ваши программы

(разумеется, надо прописать имена модулей в объявлении uses). Почему именно в этот каталог? Потому что компилятор если не найдет модуль в папке с вашим проектом, он будет искать его по умолчанию в этой системной папке.

Если же вы разместили папку my-units в другом месте, то вам придется прописывать путь к этой папке, либо в инспекторе проекта, либо непосредст-

венно в объявлении uses вот таким образом:

uses my_module in '<путь к папке с исходным кодом модуля>'

217

3.5 Модули в Паскале

____________________________________________________________________

Другой способ – это добавить путь к модулю в файле fpc.cfg. Файл на-

ходится в папке \lazarus\fpc\2.2.4\bin\i386-win32 в Windows или в папке /etc в Linux. Найдите в этом файле строку

# searchpath for units and other system dependent things

И добавьте запись вида:

-Fuпуть к модулю (именно без пробела!), например

-Fuс:\my-projects\my-units\ (Windows)

-Fu/home/user/my-projects/my-units (Linux)

Но этот файл системный, "лезть" в него без особой необходимости не ре-

комендую.

В предложенном мною способе "ничего не надо делать"! Надо просто ско-

пировать папку my-units в системный каталог. Путь к нему уже прописан в файле fpc.cfg. Только чтобы не "замусоривать" системный каталог, вам нужно все свои модули, сколько бы их ни было, помещать только в одну папку, в на-

шем случае мы будем размещать все наши общие модули в папку my-units.

3.5.2 Системные модули

Системные модули Паскаля содержат ряд полезных процедур, функций и констант, которые дают возможность использовать почти всю мощь компьюте-

ров. Рассмотрим вкратце некоторые системные модули:

System – содержит стандартные функции и процедуры "классического"

Паскаля, например, вычисления функции cos, sin, ln, exp и др. Модуль

218

Глава 3 Более сложные элементы языка

____________________________________________________________________

System автоматически доступен всем программам. Фактически мы широко пользовались этим модулем.

DOS- содержит процедуры и функции, позволяющие использовать средст-

ва операционной системы MS-DOS.

CRT – набор процедур для работы с экраном и клавиатурой.

Graph – содержит обширный набор программ, который позволяет исполь-

зовать графические возможности компьютера.

В настоящее время этот модуль устарел и практически не используется.

Логика его работы слабо совместима с современными системами и проблем с ним уйма. Начинающие часто находят какие-то примеры с его использованием и разочаровываются - часть не работает вообще, в Linux возникают проблемы с библиотеками, правами доступа и т.д.

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

ка вставить строку:

uses имя модуля;

Если используется несколько модулей, то пишется так:

uses имя модуля 1 , имя модуля 2, ….., имя модуля N;

Просмотреть тот или иной системный модуль можно, нажав клавишу

Ctrl и одновременно подведя указатель мыши к имени модуля. Когда имя мо-

дуля заменится на гиперссылку, нажмите на левую клавишу мыши.

В частности, если вы посмотрите модули SysUtils, FileUtil,

LCLProc и др., то увидите там объявления и реализации тех функций и проце-

дур, которыми мы широко пользовались.

Рекомендую почаще заглядывать в эти и другие системные модули. Вы

219

3.5 Модули в Паскале

____________________________________________________________________

найдете для себя немало интересного и поучительного. Заодно посмотрите, как пишут программы профессионалы высокого уровня.

3.5.2.1. Модуль CRT

Модуль CRT, как уже говорилось, содержит ряд процедур и функции для работы с экраном в текстовом режиме, клавиатурой и динамиком. Замечу, что этот модуль оставлен для совместимости с Turbo Pascal. В настоящее время программисты чаще используют другие средства.

Рассмотрим экран компьютера в текстовом режиме. Обычно на нем раз-

мещается 25 строк текста и 80 символов в каждой строке. Для того чтобы пол-

ностью владеть экраном, нужно знать координаты курсора, менять цвет симво-

лов, текста и фона. Для этого существуют следующие процедуры:

GoToXY(i,j)- позиционирует курсор в i строку и j столбец экрана.

write(s)- выводит строку s начиная с текущей позиции курсора.

процедура TextColor(Color)- устанавливает цвет выводимого текста.

Существуют следующие константы цветов:

Black - черный;

Blue - синий;

Green - зеленый;

Cyan - бирюзовый;

Red - красный;

Magenta - малиновый;

Brown - коричневый;

LightGray - светло-серый;

DarkGray - темно-серый;

LightBlue - ярко-голубой;

LightGreen - ярко-зеленый;

220

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773