Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник Pascal ABC.doc
Скачиваний:
66
Добавлен:
07.11.2018
Размер:
985.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.

Модуль Utils

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

type   DateTime = record     Day, Month, Year, Hour, Minute, Second, Milliseconds: integer;   end;   LongSize = record     Megabytes, Bytes: integer;   end;   SearchRec = record     name: string;     size: integer;   end; function CreateDir(name: string): boolean; function DeleteFile(name: string): boolean; function DirectoryExists(name: string): boolean; function GetCurrentDir: string; function RemoveDir(name: string): boolean; function RenameFile(OldName,NewName: string): boolean; function SetCurrentDir(name: string): boolean; procedure ChDir(name: string); function Milliseconds: integer; function CompileTime: integer; function CurrentDateTime: DateTime; function CompareMem(p1,p2: pointer; len: integer): boolean; function DiskSize(Drive: integer): LongSize; function DiskFree(Drive: integer): LongSize; procedure ShowMessage(s: string); function PascalABCPath: string; procedure FreeAndNil(var o: Object); procedure Move(p1,p2: pointer; size: integer); function FindFirstFile(path: string; var sr: SearchRec): boolean; function FindFirstDirectory(path: string; var sr: SearchRec): boolean; function FindNext(var sr: SearchRec): boolean; procedure FindClose(var sr: SearchRec); function ExtractFileName(fname: string): string; function ExtractFileExt(fname: string): string; function ExtractFilePath(fname: string): string; function ChangeFileExt(fname,ext: string): string;

CreateDir(name) - функция, создающая новый каталог с именем name и возвращающая True, если создание прошло успешно, и False в противном случае;

DeleteFile(name) - функция, удаляющая файл с именем name и возвращающая True, если удаление прошло успешно, и False в противном случае;

DirectoryExists(name) - функция, возвращающая True, если каталог с именем name существует, и False в противном случае;

GetCurrentDir - функция, возвращающая имя текущего каталога;

RemoveDir(name) - функция, удаляющая каталог с именем name и возвращающая True, если удаление прошло успешно, и False в противном случае;

RenameFile(OldName,NewName) - функция, переименовывающая файл с именем OldName в файл с именем NewName и возвращающая True, если создание прошло успешно, и False в противном случае;

SetCurrentDir(name) - функция, устанавливающая каталог с именем name текущим и возвращающая True, если текущий каталог был установлен, и False в противном случае;

ChDir(name) - процедура, меняющая текущий каталог на name;

Milliseconds - функция, возвращающая количество миллисекунд с момента начала выполнения программы;

CompileTime - функция, возвращающая количество миллисекунд, затраченное на компиляцию программы;

CurrentDateTime - функция, возвращающая текущие дату и время;

CompareMem(p1,p2,len) - функция, возвращающая True, если два участка памяти длины len байт, на которые указывают p1 и p2, идентичны, и False в противном случае;

DiskSize(Drive) - функция, возвращающая размер диска Drive (1 - диск A:, 2 - диск B:, 3 - диск C: и т.д.); если диск не существует, то в поле Megabytes возвращается 0, а в поле Bytes возвращается -1;

DiskFree(Drive) - функция, возвращающая размер свободного пространства на диске Drive.

PascalABCPath - функция, возвращающая полный путь к файлу PascalABC.exe.

ShowMessage(s) - процедура, показывающая окно с кнопкой OK и сообщением, задаваемым строкой s. Выполнение программы приостанавливается до нажатия кнопки OK.

FreeAndNil(o) - процедура, вызывающая деструктор объекта o в случае если o<>nil и присваивающая o значение nil.

FindFirstFile - функция, инициализирующая поиск файлов в каталоге path, помещающая в переменную sr первый найденный файл и возвращающая True, если поиск оказался успешным, и False в противном случае.

FindFirstDirectory - функция, инициализирующая поиск файлов в каталоге path, помещающая в переменную sr первый найденный каталог и возвращающая True, если поиск оказался успешным, и False в противном случае.

FindNext - функция, помещающая в переменную sr следующий найденный файл (если до этого вызвана функция FindFirstFile) или каталог (если до этого вызвана функция FindFirstDirectory), и возвращающая True, если поиск оказался успешным, и False в противном случае.

FindClose - процедура, освобождающая память, выделенную при поиске файлов или каталогов.

Приведем типичный пример использования FindFirstFile, FindNext, FindClose для поиска всех файлов в текущем каталоге:

uses Utils; var sr: SearchRec; begin   if FindFirstFile('*.*',sr) then   begin     writeln(sr.Name);     while FindNext(sr) do       writeln(sr.Name);   end;   FindClose(sr); end.

ExtractFileName(fname) - функция, выделяющающая имя и расширение файла из полного имени файла.

ExtractFileExt(fname) - функция, выделяющающая расширение файла из полного имени файла.

ExtractFilePath(fname) - функция, выделяющающая путь из полного имени файла.

ChangeFileExt(fname,ext) - функция, заменяющающая расширение файла на ext.