3 страница27 апреля 2026, 18:02

Расшифровка часть 2

∆6

Модуль Sounds

Модуль Sounds содержит процедуры и функции для работы со звуком:
n:=LoadSound(fname) - загружает звук из файла с именем fname в оперативную память и возвращает описатель звука в целую переменную n (звуковой файл должен иметь формат .wav);
PlaySound(n) - начинает проигрывание звука с описателем n;
StopSound(n) - останавливает проигрывание звука с описателем n;
RewindSound(n) - "перематывает" звук с описателем n на начало;
DestroySound(n) - удаляет звук с описателем n из оперативной памяти, описатель звука при этом становится недействительным;
SoundIsPlaying(n) - возвращает True если звук с описателем n проигрывается и False в противном случае;
SoundLength(n) - возвращает длительность звука с описателем n в миллисекундах.

Модуль Sounds содержит также класс Sound, имеющий следующий интефейс:
type
Sound=class
public
constructor Create(fname: string);
destructor Destroy;
procedure Load(fname: string);
procedure Play;
procedure Stop;
procedure Rewind;
property IsPlaying: boolean;
function Length: integer;
end;
Конструкторы и деструкторы
constructor Create(fname: string);
Создает объект класса Sound и загружает в него звук из файла fname (звуковой файл должен иметь формат .wav). Звук с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Sounds\ каталога программы PascalABC.exe.
destructor Destroy;
Разрушает объект и содержащийся в нем звук.

Свойства
property IsPlaying: boolean;
Проигрывается ли звук. Присваивание IsPlaying=False эквивалентно вызову Stop, а присваивание IsPlaying=True - вызову Play.
Методы
procedure Load(fname: string);
Загружает звук из файла с именем fname. Звук с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Sounds\ каталога программы PascalABC.exe. Звук, до этого содержащийся в объекте, разрушается.
procedure Play;
Начинает проигрывание звука.
procedure Stop;
Останавливаетает проигрывание звука.
procedure Rewind;
"Перематывает" звук на начало.
function Length: integer;
Возвращает длительность звука в миллисекундах.

Звуки удобнее рассматривать как объекты класса Sound, в котором собраны все основные действия со звуками. Такой подход является более удобным и современным, чем подход с описателями звуков. Единственный его недостаток - необходимость вводить основные понятия, связанные с классами. Подход с описателями позволяет работать со звуками сразу после рассмотрения темы "Процедуры и функции" или даже раньше, если подпрограммы рассматривать просто как команды.

Пример работы со звуком с использованием описателей
uses Sounds;
var n: integer;
begin
n:=LoadSound('b.wav');
PlaySound(n);
Sleep(SoundTime(n));
DestroySound(n);
end.
Пример работы со звуком с использованием класса Sound
uses Sounds;
var s: Sound;
begin
s:=Sound.Create('b.wav');
s.Play;
Sleep(s.Length);
s.Destroy;
end.
∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆
7.
Модуль Containers

Контейнеры представляют собой динамические структуры данных, хранящие набор однотипных элементов. Элементы контейнеров хранятся в динамической памяти, сами же контейнеры динамически изменяют свой размер в ходе работы программы. Массивы array и файлы очень похожи на контейнеры, однако, элементы файлов хранятся на диске, а массивы array не могут менять размер в процессе выполнения программы.
Современные языки программирования содержат модули, обеспечивающие возможность работы с такими динамическими структурами данных как списки, очереди, стеки, деревья, множества, динамические и ассоциативные массивы.
В Pascal ABC имеется модуль Containers, содержащий следующие структуры данных, реализованные в виде классов: Array (динамический массив), Stack (стек), Queue (очередь) и Set (множество). Каждый контейнер реализован в виде четырех классов, отличающихся типами элементов: integer, real, string или Object. Таким образом, модуль Containers содержит следующие классы:
IntArray
RealArray
StringArray
ObjectArray
IntStack
RealStack
StringStack
ObjectStack
IntQueue
RealQueue
StringQueue
ObjectQueue
IntSet
RealSet
StringSet
ObjectSet
Если требуется контейнер, содержащий элементы, отличные от integer, real или string, то эти элементы оформляются в виде класса, после чего они помещаются в контейнер элементов типа Object и при необходимости используется приведение типов.
В некоторых контейнерах объектов (ObjectArray и ObjectSet) имеется дополнительное поле OwnsObjects логического типа, характеризующее, владеет ли контейнер своими элементами. В конструкторе оно получает значение True, т.е. по умолчанию контейнер владеет своими элементами. Если контейнер владеет своими элементами, то он ответственен за их своевременное разрушение. Например, при вызове деструктора для контейнера объектов автоматически вызываются деструкторы его компонентов, при выполнении метода put(ind,obj) для ObjectArray вначале вызывается деструктор компонента по индексу ind и т.д. Контейнеры ObjectStack и ObjectQueue не владеют своими элементами.
∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆
8.
Модуль ABCObjects: обзор

Модуль ABCObjects реализует векторные графические объекты с возможностью масштабирования, наложения друг на друга, создания составных графических объектов и многократного их вложения друг в друга. Каждый векторный графический объект корректно себя перерисовывает при перемещении, изменении размеров и частичном перекрытии другими объектами.
Модуль ABCObjects предназначен для раннего обучения основам объектно-ориентированного программирования, а также для реализации графических и анимационных проектов средней сложности. Он полностью написан на Pascal ABC на основе модуля GraphABC и содержится в подпапке Units основной папки программы Pascal ABC.
На основе модуля ABCObjects созданы модули ABCSprites, ABCButtons, ABCChessObjects, ABCHouse, ABCRobots, ABCAdditionalObjects.
Следующие темы помогут изучить возможности модуля ABCObjects:
Быстрое введение
Диаграмма классов
Класс ObjectABC
Создание графических объектов
Динамический массив Objects
Константы, процедуры и функции модуля ABCObjects
Контейнеры графических объектов
Мультикартинки
Спрайты (модуль ABCSprites)
Создание нового типа графического объекта
Ускорение перерисовки графических объектов
Совмещение графического вывода модулей ABCObjects и GraphABC.
∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆
9.
Модуль VCL

Модуль VCL (Visual Components Library - библиотека визуальных компонентов) содержит компоненты в стиле Delphi, позволяющие разрабатывать приложения с главной формой, на которую могут быть помещены стандартные элементы управления Windows. Приложения этого типа в Pascal ABC называются приложениями Pascal ABC Forms. Они являются событийно управляемыми и завершаются лишь после закрытия главной формы.
Компоненты представляют собой классы, производные от класса Component. Каждый компонент имеет свойства, методы и события.
Изменение свойств влияет на внешний вид и поведение компонентов. Например, при изменении свойства Caption для формы меняется заголовок формы, при изменении свойств Width и Height для кнопки меняются размеры кнопки, при изменении свойства Interval для таймера меняется интервал срабатывания таймера и т.д.
Вызов методов компонентов производит какие-то действия с самими компонентами и часто меняет их свойства. Например, вызов метода SetSize для элемента управления устанавливает его размеры, вызов метода для формы Close закрывает эту форму, вызов метода Execute для окна диалога открывает это окно диалога и т.д.
Каждый компонент может реагировать на события, возникающие при выполнении программы. Для этого он должен определить обработчик соответствующего события и привязать его к этому событию. События представляют собой процедурные переменные, а обработчики являются процедурами соответствующего типа. Например, чтобы при нажатии на кнопку выполнялось некоторое действие, для этой кнопки необходимо определить обработчик события OnClick; чтобы при срабатывании таймера выполнялось некоторое действие, для этого таймера необходимо определить обработчик события OnTimer и т.д.
Большинство событий имеются в двух вариантах: обычные и расширенные. Имена расширенных событий отличаются от имен соответствующих обычных событий окончанием Ext, например, OnClick и OnClickExt, OnKeyPress и OnKeyPressExt и т.д. Расширенные события содержат по сравнению с обычными дополнительные параметры. Если определены обработчики для обычного и расширенного события, то вначале вызывается обработчик расширенного события, а затем - обработчик обычного.
Название VCL (библиотека визуальных компонентов) взято из системы Delphi, однако оно не совсем верно: не все компоненты являются визуальными.
Пример простейшей программы Pascal ABC Forms.
Диаграмма классов VCL.
Классификация компонентов.
∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆∆

3 страница27 апреля 2026, 18:02

Комментарии

0 / 5000 символов

Форматирование: **жирный**, *курсив*, `код`, списки (- / 1.), ссылки [текст](https://…) и обычные https://… в тексте.

Пока нет комментариев. Будьте первым!