Константы

Введение

Есть много вещей, которые мы можем изменить. И так же много тех, что изменить невозможно. Давайте поговорим о вторых.

Земля делает полный оборот за 24 часа - нам этого не изменить. Если вы бросите камень, он упадет - по-другому быть не может. Двигателю необходимо топливо, чтобы работать - по крайней мере, современный двигатель мы не сможем запустить без топлива.

А компьютеры? Они используют константы постоянно, даже если мы не замечаем этого. Не только эти глупые машины не могут работать без постоянного напряжения питания, но и программная часть использует постоянные значения данных.

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

...так и константы в программах имеют свои имена, что облегчает понимание того, какой именно тип данных назначен каждой из них.

Данные называются константами, если программа не может непосредственно изменить их.

Давайте представим, что стакан - это наименование постоянной. Вода в стакане - постоянная. Она не меняется с течением времени.

Константы в Multimedia Builder используются:
  • для хранения различной мультимедийной и системной информации, такой как разрешение экрана, продолжительность аудио и видео, пути к папкам, наименования и т.д.
  • в качестве командных параметров, когда вы хотите сообщить своему приложению что-либо особенное, например: открыть в новом окне, поместить поверх всех окон, приготовить немножечко кофе...

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

Важной особенностью констант в MMB является то, что они могут передавать свое значение в числовые и строковые переменные. Это открывает широкий простор для работы с полученными значениями.

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

a) написать имя числовой переменной:

CurrentYear

b) затем указать знак присваивания:

=

c) и указать константу, значение которой необходимо получить:

CBK_Year

В полном виде код команды для получения значения текущего года из константы CBK_Year в числовую переменную CurrentYear выглядит так:

CurrentYear=CBK_Year

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

a) написать имя строковой переменной:

WindowsVer$

b) затем указать знак присваивания:

=

c) и указать константу, значение которой необходимо получить:

WinVer()

Код команды для получения значения версии Windows из константы WinVer() в строковую переменную WindowsVer$ выглядит так:

WindowsVer$=WinVer()

Как видно из примеров, некоторые константы имеют числовое значение, а некоторые - строковое (в зависимости от содержащейся в них информации).

Константы CBK

Их название такое ужасное и неуклюжее (CBK!), но они не более чем системные константы, значение которых может отображаться в текстовых объектах.

Да! Кто бы мог подумать ;-)

Константы CBK являются частью текстового объекта ("Text Object"). Давайте посмотрим, что здесь можно узнать и чему научиться.

В свойствах текстового объекта, справа от поля "Label", есть кнопка со стрелкой. С ее помощью открывается список констант CBK, которые вы можете использовать в вашем проекте. Они разделены на 6 категорий, в зависимости от их содержания. Во время выполнения программы в текстовом объекте будет отображаться значение выбранной константы.

Пояснения ко всем константам CBK далее.

Аудио CBK константы

Имя константы Пояснение Пример
CBK_Total Отображает общее время текущего аудиофайла. Формат отображения мм:сс 21:12
CBK_Total Sec Отображает общее время текущего аудиофайла. Время отображается в секундах. 360
CBK_Time Отображает текущее время загруженного аудиофайла. Формат отображения мм:сс 11:08
CBK_Time Sec Отображает текущее время загруженного аудиофайла. Время отображается в секундах. 110
CBK_AudioType Возвращает тип загруженного аудиофайла. MPEG 1 Layer 3
CBK_AudioBit Возвращает битрейт загруженного аудиофайла. Формат отображения:кбит/с 256kbps
CBK_AudioFreq Возвращает частоту дискретизации загруженного аудиофайла. Частота выражается в кГц (n x 1000 Гц). 44.1kHz
CBK_AudioName Возвращает имя загруженного аудиофайла, без указания пути и расширения. Where We Start
CBK_Channels Возвращает число каналов в файле.
Может иметь значение Mono или Stereo.
Stereo
CBK_ID3Song Отображает название произведения по информации, полученной из ID3-тега. Where We Start
CBK_ID3Artist Отображает исполнителя по информации, полученной из ID3-тега. David Gilmour
CBK_ID3Album Отображает альбом по информации, полученной из ID3-тега. On An Island
CBK_ID3Year Отображает год по информации, полученной из ID3-тега. 2006
CBK_ID3Genre Отображает жанр по информации, полученной из ID3-тега. Rock
CBK_NumTracks Возвращает число треков, содержащихся на аудио CD. 12

Константы CBK внутреннего списка MMB

Имя константы Пояснение Пример
CBK_CurItemList Отображает текущий элемент внутреннего списка. Pink Floyd - High Hopes
CBK_NumInList Вычисляет и показывает количество элементов в списке. 31
CBK_TotalList

Отображает общую длительность всех элементов в списке. Формат отображения мм:сс

Для вычисления этого значения вы должны использовать команду SongListTime.
135:28
CBK_TotalListSec

Отображает общую длительность всех элементов в списке. Время отображается в секундах.

Для вычисления этого значения вы должны использовать команду SongListTime.
1130

Видео CBK константы

Имя константы Пояснение Пример
CBK_VName Возвращает имя загруженного видеофайла, без указания пути и расширения. Knockin' On Heaven's Door
CBK_VTotal Отображает общее время текущего видеофайла. Формат отображения мм:сс 180:00
CBK_VTotalSec Отображает общее время текущего видеофайла. Время отображается в секундах. 10800
CBK_VTime Отображает текущее время загруженного видеофайла. Формат отображения мм:сс 94:32
CBK_VTimeSec Отображает текущее время загруженного видеофайла. Время отображается в секундах. 2100
CBK_VTotalFrames Возвращает число кадров в загруженном видеофайле. 394024
CBK_VFrame Отображает текущий кадр загруженного видеофайла. 249253

Константы CBK даты и времени

Имя константы Пояснение Пример
CBK_Year Отображает текущий год. 2006
CBK_Month Отображает месяц в текстовом формате. July
CBK_Month Num Отображает месяц в числовом формате в диапазоне 1 - 12. 7
CBK_Day Отображает текущий день недели в текстовом формате. Tuesday
CBK_DayNum Отображает текущий день недели в числовом формате в диапазоне 1 - 7:
  • Воскресенье = 1
  • Понедельник = 2
  • Вторник = 3
  • Среда = 4
  • Четверг = 5
  • Пятница = 6
  • Суббота = 7
3
CBK_DateNum Отображает число месяца в числовом формате в диапазоне 1 - 31. 22
CBK_DateShort Отображает дату в сокращенном формате Windows: день/месяц/год 22/09/2005
CBK_DateLong Отображает дату в расширенном формате Windows: месяц число, год September 22, 2005
CBK_TimeHMS Отображает системное время в 12-часовом формате: часы:минуты:секунды 01:06:12 PM
CBK_Time24 Отображает системное время в 24-часовом формате: часы:минуты:секунды 15:06:12
CBK_Hour Отображает текущий час в диапазоне 0 - 23. 15
CBK_Minute Отображает текущую минуту в диапазоне 0 - 59. 06
CBK_Second Отображает текущую секунду в диапазоне 0 - 59. 12

Основные CBK константы

Имя константы Пояснение Пример
CBK_AppFileName Возвращает имя исполняемого файла проекта в формате "имя"."exe"). test.exe
CBK_PageName Отображает имя страницы. Game Field
CBK_Error Возвращает код возможной ошибки, переданной от FMOD или видеообъекта. Коды ошибок FMOD представлены целыми числами. -1
CBK_Volume Возвращает значение громкости, выраженное в процентах. 60
CBK_URLpath Отображает адрес страницы, загруженной в HTML-объект. http://www.mediachance.com
CBK_OpenFile После использования в проекте диалогового окна "Открыть файл", эта константа содержит имя выбранного файла без указания пути. Dogs.mp3
CBK_OpenDir После использования в проекте диалогового окна "Открыть файл", эта константа содержит путь к выбранному файлу. E:\Music\Roger Waters\In The Flesh
CBK_ReturnVal Команда Run передает коды выполнения от запускаемого приложения в эту константу, если такие коды предусмотрены в данном приложении. 1
CBK_SelColor

Возвращает значение цвета из диалогового окна "Выбор цвета". Выбор цвета осуществляется с помощью системы RGB, состоящей из 3 компонентов: Красный (Red), Зеленый (Green), Синий (Blue).

Каждый из компонентов может быть задан одним из 256 уровней. Чем больше значение уровня, тем больше интенсивность соответствующего компонента. Если вы укажете значение 0, то данный компонент использоваться не будет. Значение 255 указывает на максимальную интенсивность цвета.

Константа содержит строку с тремя разделенными запятыми элементами, представляющими цвета RGB в диапазоне значений 0 - 255.

Чтобы получить значение цвета, просто назначьте содержимое константы любой текстовой переменной:

color$=CBK_SelColor

R,G,B Результат
128,5,64  

R,G,B Результат
0,255,255  
CBK_Font Содержит параметры шрифта, выбранного с помощью команды FontPicker(), в виде строки с разделителем. Arial|REGULAR|10|204|NONE|
CBK_MsgEx Данная константа содержит результат выполнения команды MessageEx(). Если пользователь нажал кнопку в окне сообщения, то константа содержит идентификационный номер нажатой кнопки. Если таймаут сообщения истек, то значение константы равно -1. 1

Скриптовые CBK константы

Имя константы Пояснение Пример
CBK_AudioEOF Если вы зададите имя скрипта, расположенного на текущей странице или на верхнем мастер-слое (Master Top Layer), в соответствии с этой константой, то этот скрипт будет выполняться при завершении воспроизведения аудиофайла (ogg). MMB сначала ищет этот скрипт на текущей странице, потом на мастер-слое. Пример
CBK_Menu Если вы зададите группе объектов имя, начинающееся с "CBK_Menu", то эта группа не будет отображаться до тех пор, пока пользователь не щелкнет на ту часть экрана, где она расположена. Это может помочь при создании скрывающихся меню. При щелчке пользователя в любой части экрана все меню скроются, за исключением меню, находящегося под курсором мыши. Для примера смотрите файл masterpages.mbd Пример
CBK_EXIT Если вы зададите имя скрипта или объекта, расположенного на верхнем мастер-слое (Master Top Layer), в соответствии с этой константой, то нажатие клавиши Escape не будет автоматически закрывать ваше приложение (по умолчанию), а будет выполняться код, который указан в скрипте CBK_EXIT. Таким образом можно создавать диалоговые окна типа "Вы действительно хотите выйти?", а также выполнять любые действия перед закрытием приложения. Пример
CBK_CMDLINE Если вы зададите имя скрипта, расположенного на верхнем или нижнем мастер-слое (Master Top Layer или Master Page), в соответствии с этой CBK константой, то каждый раз, как только вы запустите приложение с некоторыми параметрами, будет вызван этот скрипт и приложение сможет обработать их через скрипт CBK_CMDLINE (например, начнет воспроизведение mp3-файла, имя которого передано в качестве параметра). Пример

Системные константы

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

Например:

Команда(СистемнаяКонстанта(),Параметр 2)

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

ScreenWidth()

возвращает значение ширины экрана в пикселях

Пример использования:
Message("Ширина экрана: ","ScreenWidth()")

ScreenHeight()

возвращает значение высоты экрана в пикселях

Пример использования:
Message("Высота экрана: ","ScreenHeight()")

WorkAreaWidth()

возвращает значение ширины рабочей области экрана в пикселях

Пример использования:
Message("Ширина рабочей области: ","WorkAreaWidth()")

WorkAreaHeight()

возвращает значение высоты рабочей области экрана в пикселях

Пример использования:
Message("Высота рабочей области: ","WorkAreaWidth()")

MouseX()

возвращает значение координаты X (горизонтальная ось) положения курсора мыши относительно левой границы рабочей области приложения

Пример использования:
Message("Текущее положение курсора по оси X: ","MouseX()")

MouseY()

возвращает значение координаты Y (вертикальная ось) положения курсора мыши относительно верхней границы рабочей области приложения

Пример использования:
Message("Текущее положение курсора по оси Y: ","MouseY()")

MouseLButton()
MouseRButton()
MouseMButton()

возвращают состояние кнопок мыши.
Если кнопка нажата, то константа возвращает значение 1, в противном случае 0.

Пример использования:
Для события PageStart установите таймер, который запустит скрипт определения состояния мыши
ScriptTimer("TimerA=Script","50")

Создайте новый скрипт с именем Script и поместите в него следующий код:

MStateL=MouseLButton()
MStateM=MouseMButton()
MStateR=MouseRButton()
MState=MStateL+MStateM+MStateR
** если нажата одна кнопка
If (MState=1) Then
If (MStateR=1) Then
LoadText("Text","Определен щелчок правой кнопкой мыши")
End
If (MStateL=1) Then
LoadText("Text","Определен щелчок левой кнопкой мыши")
End
If (MStateM=1) Then
LoadText("Text","Определен щелчок средней кнопкой мыши")
End
ScriptTimer("TimerA=Script","50")
Return()
Else
** если не нажата ни одна кнопка или нажато несколько кнопок
LoadText("Text"," ")
End
** повтор определения состояния мыши
ScriptTimer("TimerA=Script","50")

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

ProcType()

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

Пример использования:
var$=ProcType()
Message("В этом компьютере установлен процессор: ","var$")

Полученное значение может иметь вид:
Intel (R) Core 2 Duo (R) CPU 2.80 GHz

ProcFreq()

отображает производительность центрального процессора в МГц в числовом формате

Пример использования:
Message("Частота процессора в МГц: ","ProcFreq()")

Полученное значение может иметь вид:
2793

GetMemory()

определяет общий объем оперативной памяти и количество свободной памяти.

Эти значения отображаются в текстовом виде, разделенные символом "/", поэтому, чтобы получить раздельные значения, необходимо воспользоваться дополнительными функциями для работы со строками.

Пример использования:
Message("Состояние оперативной памяти: ","GetMemory()")

Полученное значение может иметь вид:

511/324

(первое значение показывает Общий объем, второе - Объем свободной памяти)

UsingWinNT()

возвращает числовое значение, которое может иметь два состояния:

1 = компьютер управляется операционной системой семейства NT
0 = компьютер управляется системой, отличной от NT

Пример использования:
Message("На компьютере установлена система семейства NT: ","UsingWinNT()")

Если операционная система семейства NT действительно установлена на данном компьютере, то значение будет таким:

1

WinVer()

возвращает основной разряд (major), младший разряд (minor) и разряд сборки (build) версии Windows

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

Пример использования:
var$=WinVer()
Message("Версия Windows :","var$")

Полученное значение может иметь вид:
5.01.2600

Порядковые номера версий Windows:

Windows 95 4.00.950
Windows 95 SP1 4.00.(>950)/4.00.(<=1080)
Windows 95 OSR2 4.(<10).(>1080)
Windows 98 4.10.1998
Windows 98 SP1 4.10.(>1998)/4.10.(<2183)
Windows 98 SE 4.10.(>=2183)
Windows Me 4.90.3000
Windows NT 3.51 3.51.1057
Windows NT 4.0 4.00.1381
Windows 2000 5.00.2195
Windows XP/SP1 5.01.2600
Windows Vista 6.00.6000

ScreenColors()

возвращает текущую глубину цвета, используемую Windows и видеокартой

Значение представляется в числовом формате и отображает количество цветов (16,256) для низких значений глубины цвета и количество бит (16,32) для высоких значений.

Пример использования:
Message("Текущая глубина цвета: ","ScreenColors()")

Полученное значение может иметь вид:
32

Константы окна приложения

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

PubWidth()

возвращает значение длины окна приложения (вместе с границей) в пикселях

Пример использования:
Message("Длина окна + граница: ","PubWidth()")

PubHeight()

возвращает значение высоты окна приложения (вместе с границей и заголовком) в пикселях

Пример использования:
Message("Высота окна + граница и заголовок: ","PubHeight()")

ClientWidth()

возвращает значение длины рабочей области окна приложения в пикселях

Пример использования:
Message("Длина рабочей области окна: ","ClientWidth()")

ClientHeight()

возвращает значение высоты рабочей области окна приложения в пикселях

Пример использования:
Message("Высота рабочей области окна: ","ClientHeight()")

PubX()

возвращает значение координаты X окна приложения в пикселях

Пример использования:
Message("Координата X окна: ","PubX()")

PubY()

возвращает значение координаты Y окна приложения в пикселях

Пример использования:
Message("Координата Y окна: ","PubY()")

IsMinimized()

эта функция проверяет состояние окна приложения

Функция возвращает одно из двух значений:

1 = окно свернуто
0 = окно не свернуто

IsMaximized()

эта функция также проверяет состояние окна приложения

Функция возвращает одно из двух значений:

1 = окно развернуто на весь экран
0 = окно не развернуто

Константы объектов

Эти константы относятся к свойствам и параметрам объектов в вашем проекте. С их помощью вы можете получить информацию о размере и координатах объектов.

ObjectX(ИмяОбъекта)

возвращает координату X указанного объекта

Отсчет координат начинается с верхнего левого угла окна приложения.
Полученное значение указывает на верхний левый угол объекта.

Имя объекта, координату которого требуется получить, заключается в круглые скобки.
Например: ObjectX(Button)

Пример использования:
Message("Координата X кнопки: ","ObjectX(Button)")

С помощью этой команды на экран будет выведено сообщение с указанием координаты X верхнего левого угла объекта "Button"

ObjectY(ИмяОбъекта)

возвращает координату Y указанного объекта

Отсчет координат начинается с верхнего левого угла окна приложения.
Полученное значение указывает на верхний левый угол объекта.

Имя объекта, координату которого требуется получить, заключается в круглые скобки.
Например: ObjectY(Button)

Пример использования:
Message("Координата Y кнопки: ","ObjectY(Button)")

С помощью этой команды на экран будет выведено сообщение с указанием координаты Y верхнего левого угла объекта "Button"

ObjectWidth(ИмяОбъекта)

возвращает длину указанного объекта

Длина отсчитывается от верхнего левого угла объекта

Имя объекта, длину которого требуется получить, заключается в круглые скобки.
Например: ObjectWidth(Button)

Пример использования:

Message("Длина кнопки: ","ObjectWidth(Button)")

С помощью этой команды на экран будет выведено сообщение с указанием длины объекта "Button"

ObjectHeight(ИмяОбъекта)

возвращает высоту указанного объекта

Высота отсчитывается от верхнего левого угла объекта

Имя объекта, высоту которого требуется получить, заключается в круглые скобки.
Например: ObjectHeight(Button)

Пример использования:
Message("Высота кнопки: ","ObjectHeight(Button)")

С помощью этой команды на экран будет выведено сообщение с указанием высоты объекта "Button"

CurrentObject()

возвращает имя объекта, из которого была вызвана эта функция

Пример использования:
object$=CurrentObject()

Если эта функция размещена, например, в объекте "TextBTN", то она вернет строку "TextBTN".

Это удобно использовать в тех случаях, когда необходимо копировать и вставлять имя объекта несколько раз, особенно, если в скрипте требуется обратиться к текущему объекту.

ImageScrollX(ИмяОбъекта)

возвращает значение координаты X изображения внутри растрового объекта

Это полезно, если изображение меньше или больше, чем сам растровый объект (контейнер изображения) и изображение прокручивается внутри объекта (опция "Keep Actual Image Size" должна быть включена).

ImageScrollX возвращает отрицательное значение, если верхний левый угол изображения выходит за рамки контейнера объекта.

Пример использования:
Message("Координата X изображения: ","ImageScrollX(Bitmap)")

С помощью этой команды на экран будет выведено сообщение с указанием координаты X изображения внутри объекта "Bitmap".

ImageScrollY(ИмяОбъекта)

возвращает значение координаты Y изображения внутри растрового объекта

Это полезно, если изображение меньше или больше, чем сам растровый объект (контейнер изображения) и изображение прокручивается внутри объекта (опция "Keep Actual Image Size" должна быть включена).

ImageScrollY возвращает отрицательное значение, если верхний левый угол изображения выходит за рамки контейнера объекта.

Пример использования:
Message("Координата Y изображения: ","ImageScrollY(Bitmap)")

С помощью этой команды на экран будет выведено сообщение с указанием координаты Y изображения внутри объекта "Bitmap".

ImageWidth(ИмяОбъекта)

возвращает полную длину изображения

В то время как функция ObjectWidth возвращает длину объекта, ImageWidth возвращает полную длину изображения, даже если часть изображения не видна (так бывает, если изображение больше, чем его контейнер).

Имя изображения, длину которого требуется получить, заключается в круглые скобки.
Например: ImageWidth(Bitmap)

Пример использования:
Message("Полная длина изображения: ","ImageWidth(Bitmap)")

С помощью этой команды на экран будет выведено сообщение с указанием длины изображения "Bitmap".

ImageHeight(ИмяОбъекта)

возвращает полную высоту изображения

В то время как функция ObjectHeight возвращает высоту объекта, ImageHeight возвращает полную высоту изображения, даже если часть изображения не видна (так бывает, если изображение больше, чем его контейнер).

Имя изображения, высоту которого требуется получить, заключается в круглые скобки.
Например: ImageHeight(Bitmap)

Пример использования:
Message("Полная высота изображения: ","ImageHeight(Bitmap)")

С помощью этой команды на экран будет выведено сообщение с указанием высоты изображения "Bitmap".

GetImageOpacity(ИмяОбъекта)

возвращает текущее значение непрозрачности указанного растрового объекта

Непрозрачность изображения может быть задана как во время разработки приложения (в свойствах Растрового объекта), так и во время выполнения программы (через команду ImageOpacity).

Пример использования:
opacity=GetImageOpacity(Bitmap)
Message("Значение непрозрачности:","opacity")

GetVideoParam(ИмяОбъекта,Параметр)

возвращает текущее состояние заданного параметра (0/1 = ВЫКЛ/ВКЛ):

fullscreen Полноэкранный режим включен (1) или выключен (0)
loop Циклический повтор включен (1) или выключен (0)
mute Звук выключен (1) или включен (0)
time Видео в режиме "Время" (1).
0 = Видео в режиме "Кадры"
frame Видео в режиме "Кадры" (1)
0 = Видео в режиме "Время"

Пример использования:
GetVideoState=GetVideoParam(Video, fullscreen)
возвращает 0 или 1 в зависимости от состояния полноэкранного режима

GetVideoState=GetVideoParam(Video, mute)
возвращает 0 или 1 в зависимости от состояния звуковой дорожки видео

ScrollBarSize(ИмяОбъекта)

возвращает длину (если полоса прокрутки вертикальная) или высоту (если полоса прокрутки горизонтальная) полосы прокрутки изображения в пикселях.

Эта функция полезна, если полоса прокрутки включена, и вы хотите узнать размер растрового объекта вместе с полосой прокрутки. Размер полосы прокрутки может отличаться в разных ОС.

Пример использования:
Message("Высота полосы прокрутки: ","ScrollBarSize(Bitmap)")

С помощью этой команды на экран будет выведено сообщение с указанием высоты полосы прокрутки изображения "Bitmap".

IsVisible(ИмяОбъекта)

эта функция проверяет, существует ли объект на данной странице и отображается он или нет

Функция возвращает одно из трех значений:

-1 = объект отсутствует на данной странице
0 = объект скрыт
1 = объект отображается

Имя объекта, состояние которого требуется выяснить, заключается в круглые скобки.

Пример использования:
Message("Состояние объекта: ","IsVisible(Button)")

С помощью этой команды на экран будет выведено сообщение с указанием состояния объекта "Button".

Относительные пути

В MMB могут быть фиксированные и динамические пути:

Фиксированный путь: полный путь, включающий в себя имя диска, путь к файлу и имя файла. Такой путь указывает на определенное место на диске.
Например: C:\My Wonderful Project\Bin\MyProject.exe

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

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

Относительные пути в MMB представляют собой строковые константы, и вы можете использовать их в качестве параметров. Например:

Команда("Параметр 1","<ПутьКФайлу>\MyProject.exe")

Этот пример использует относительный путь <ПутьКФайлу>, чтобы получить значение пути к исполняемому файлу. После относительного пути указано полное имя приложения (в данном случае MyProject.exe).

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

Теперь познакомимся с относительными путями, используемыми в MMB, более подробно:

<SrcDir>

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

Если полный путь к приложению имеет следующий вид:

C:\Program Files\My Project Folder\MyProject.exe

...тогда с использованием <SrcDir> этот же путь будет выглядеть так:

<SrcDir>\MyProject.exe

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

В командах MMB этот относительный путь используется следующим образом:

Команда("Параметр 1","<SrcDir>\MyProject.exe")

В этом примере команда использует <SrcDir> в составе второго параметра, который указывает на путь к файлу проекта.

MMB переводит значение относительного пути <SrcDir> в обычный путь (например, С:\Program Files\My Project\MyProject.exe) и команда выполняется.

Примечание: MMB запускает проекты в двух режимах:

  • Режим разработки - во время редактирования проекта в MMB, его запуск осуществляется внутри того каталога, в который был установлен Multimedia Builder (например, C:\Program Files\Mediachance\Multimedia Builder 4.9.7). Поэтому все файлы, путь к которым указан через <SrcDir>, должны быть помещены в этот же каталог.
    Этот режим доступен, когда в меню Инструменты -> Параметры редактора (Tools -> Designer Settings) установлены следующие параметры:

  • Рабочий режим - когда проект запускается как независимый exe-файл, или, если в меню Инструменты -> Параметры редактора указан внешний плеер для запуска проектов:

    Что означает "внешний плеер"? Это скомпилированный exe-файл, помещенный в определенный каталог. Если вы указываете его в меню Инструменты -> Параметры редактора (например, D:\Source), то проект из MMB будет запускаться в каталоге внешнего плеера. Поэтому все файлы, путь к которым указан через <SrcDir>, должны быть помещены в директорию, содержащую внешний плеер.

<SrcDrive>

Представляет собой корневой каталог диска, с которого запущено приложение.

Если приложение расположено на диске C, то относительный путь <SrcDrive> будет содержать значение:

C:\

Этот путь используется в приложениях, ориентированных на CD-ROM или DVD-ROM, когда все динамические пути задаются относительно корневого каталога.

<CD>

Возвращает значение корневого каталога первого оптического привода.

Если первый привод имеет букву E, то относительный путь <CD> будет содержать значение:

E:\

Этот относительный путь также как и <SrcDrive> используется в приложениях, ориентированных на CD-ROM или DVD-ROM. Кроме того, он может быть полезен при создании медиаплееров, для указания пути к аудио и DVD-дискам. Недостатком данного пути является то, что он не может индексировать все оптические приводы, а только первый.

<Embedded>

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

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

Например, если у вас имеется вложенный звуковой файл:

MySound.wav

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

<Embedded>\MySound.wav

Когда вы запустите приложение, MMB преобразует этот путь в обычный:

C:\Windows\Temp\MMBPlayer\MySound.wav (для семейства операционных систем Windows 9x)

...или в такой путь:

C:\Documents and Settings\UserName\Local Settings\Temp\MMBPlayer\MySound.wav (для операционных систем семейства NT, где каталог временных файлов создается для каждого пользователя в отдельности).

<Windows>

Возвращает значение пути к каталогу Windows.

Например, если Windows установлена на диске C, и вы хотите указать путь к файлу win.ini, то с использованием <Windows> он будет выглядеть так:

<Windows>\win.ini

Когда вы запустите приложение, MMB преобразует этот путь в обычный:

C:\WINDOWS\win.ini

В MMB этот путь используется для указания пути к конфигурационным INI-файлам.

<System>

Возвращает значение пути к системному каталогу Windows.

Если вам необходимо указать путь к программе dxdiag.exe, то с помощью относительного пути это будет выглядеть следующим образом:

<System>\dxdiag.exe

Когда вы запустите приложение, MMB преобразует этот путь в обычный:

C:\Windows\system\dxdiag.exe (для семейства операционных систем Windows 9x)

...или в такой путь:

C:\WINDOWS\system32\dxdiag.exe (для операционных систем семейства NT)

Примечание: для операционных систем семейства NT Windows 2000/Windows 2000 Server и более ранних этот путь будет выглядеть так:

C:\WINNT\system32\dxdiag.exe

<Temp>

Возвращает значение пути к каталогу временных файлов Windows.

Если у вас есть временный файл:

TempList.txt

С использованием <Temp> путь к нему будет выглядеть так:

<Temp>\TempList.txt

Когда вы запустите приложение, MMB преобразует этот путь в обычный:

C:\Windows\Temp\TempList.txt (для семейства операционных систем Windows 9x)

...или в такой путь:

C:\Documents and Settings\UserName\Local Settings\Temp\TempList.txt (для операционных систем семейства NT, где каталог временных файлов создается для каждого пользователя в отдельности).

<File>

Возвращает полный путь и имя выбранного в диалоговом окне "Открыть" файла.

Если вы открыли файл:

C:\WINDOWS\regedit.exe

то впоследствии вы можете использовать этот же путь с помощью относительного пути:

<File>

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

<List>

Используется в командах, относящихся к внутреннему списку файлов MMB и плейлистам.

Константа <List> хранит перечень всех объектов из внутреннего списка (Internal List) файлов MMB, поэтому вы легко можете переместить содержимое внутреннего списка в обычный объект-список.

Пример использования:
ListBoxAddItem("SongList","<List>")

В этом примере содержимое внутреннего списка передается в список с именем "SongList". Для ознакомления с подробной информацией по команде ListBoxAddItem смотрите раздел Команды управления списком.

<This>

Это специальный макрос, использующийся только в MCI-командах. Он указывает устройству на то, что окно проекта MMB является родительским, то есть основным.

Вот небольшой пример, показывающий, как запустить видеофайл в окне проекта:

MCICommand("open <SrcDir>\sample.mpg alias MPEG style child parent <This>")
MCICommand("put MPEG window at 100 50 200 200")
MCICommand("window MPEG state hide")
MCICommand("play MPEG")

MMB Программирование без границ :: dgilmour, перевод на русский язык, 2006 :: Все права защищены :: www.mmbscript.ru