TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

9.4.1. Создание ресурсов

Для создания ресурса любого типа можно использовать редактор ресурсов Resourse Workshop или один из компиляторов ресурсов — BRC.EXE или BRCC.EXE. Поскольку редактор ресурсов работает только в среде Windows, а эта операционная система необязательно установлена на Вашем ПК, дальше описывается процесс создания ресурсов с помощью компиляторов, которые работают под управлением MS-DOS.

Компилятор ресурсов получает текстовый файл описания ресурсов и производит двоичный ресурсный файл. По умолчанию расширение текстового файла — RC, а ресурсного файла — RES. Текст .КС—файла со— тавляется на специальном языке описания ресурсов.

Каждый ресурс в RC—файле содержит заголовок и описание. В заголовке, имеющем формат

[<ИМЯ_РЕСУРСА>] <ТИП_РЕСУРСА>

указывается имя ресурса и его тип. Имя ресурса — обязательный параметр для всех ресурсов, кроме строковых. При формировании имени используются правила создания идентификаторов Паскаля:

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

• имя не может начинаться с цифры;

• разница в высоте символов имени игнорируется, т.е. имена MYRES и MyRes считаются синонимами.

Тип ресурса задается одним из зарезервированных слов: STRINGTABLE — для строкового ресурса и RCDATA — для ресурса пользователя. В отличие от имен эти слова, а также зарезервированные слова BEGIN и END, обрамляющие раздел описания ресурса, должны состоять только из заглавных букв.

Раздел описания открывается словом BEGIN и завершается словом END. Каждая строка в строковом ресурсе описывается следующим образом:

<НОМЕР>"[<СТРОКА>]"

<НОМЕР> представляет собой произвольное целое число без знака в диапазоне от 0 до 65535. Это число трактуется как уникальный идентификатор строки и не может быть одинаковым у двух разных строк в пределах всего RC—файла, (в файле может быть сколько угодно описаний

строковых ресурсов). Строка обрамляется двойными кавычками и может быть пустой, т.е. между обрамляющими кавычками может не быть ни одного символа. Если в строку необходимо поместить символ «"», он удваивается. На одной текстовой строке файла можно размещать произвольное количество описаний строк. Перед номером и после него может стоять сколько угодно разделителей — пробелов, символов табуляции и запятых. Если в строке встретилась точка с запятой, остаток строки игнорируется — таким способом можно вставлять комментарии. Внутри обрамляющих кавычек разделители теряют свое специальное назначение и считаются обычными символами. Пример правильного описания строкового ресурса:

STRINGT^BLE BEGIN

1 "Первая строка" 2"Вторая строка"5"Пятая строка" ,,,,,4,,,"Четвертая строка..." END

При выводе строк этого ресурса в цикле от 1 до 5 не экране появится такой текст:

Первая строка Вторая строка Четвертая

строка... Пятая строка

Как видим, разрыв концом строки текста Четвертая строка. . . привел к тому, что вторая часть текста выводится на следующей строке, но с той же позиции, на которой закончился вывод первой части. Это связано с тем, что в строку вставился лишь символ Перевод строки (#10), но не вставился Возврат каретки (#13). Следует заметить, что компилятор ресурсов обрабатывает текст строки по правилам языка Си, в котором разрешены так называемые управляющие символы. Эти символы начинаются обратной косой чертой, за которой может следовать латинская буква, восьмеричное или 16—ричное число в диапазоне О...255. Восьмеричное число состоит из восьмеричных цифр (цифры от 0 до 7), перед 16— ричным числом указывается латинская бука х или X. Комбинация \<ЧИСЛО> определяет внутренний код вставляемого символа, т.е. играет такую же роль, что и константа #<ЧИСЛО> в Паскале. Два следующих управляющих символа вставляют в текст строки символ Возврат каретки (#13):

\15 \xD

Комбинация \<БУКВА> для некоторых букв латинского алфавита определяет часто используемые символы:

Управляющий Значение символ

\а Звуковой сигнал

\Ь Забой слева {Backspace)

\п Перевод строки

\г Возврат каретки

\t Табуляция

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

4 "Четвертая\п\гстрока" на экран будет выведено:

Четвертая строка

В связи с тем, что символ «\» играет специфичную роль, его нужно удваивать, чтобы компилятор не рассматривал его как служебный символ:

ресурс

4 "Четвертая\\строка" даст на экране

Четвертая\строка

Описание ресурса пользователя в заголовке содержит зарезервированное слово RCDATA, которому должно предшествовать имя ресурса. В раздел описания можно вставлять

• десятичные числа типа Word, Integer,

• шестнадцатеричные числа в диапазоне от $0000 до $FFFF; перед шестнадцатеричным числом ставится символ $;

• цепочки символов в двойных апострофах по правилам строковых ресурсов, но без замыкающего нуля; если требуется поместить в ресурс ASCIIZ— строку, в ее конце нужно добавить «\0»;

• цепочки байтов в одиночных апострофах; байты в такой цепочке

задаются в 16—ричном формате и разделяются пробелами. Пример правильного описания ресурса пользователя:

My Res RCDATA

BEGIN

"Это - АЗС112-строка\О"

$FFFF, 65535 ; две формы записи одного числа

"123456789 А' ; байты со значениями от 1 до 10

-1 127 ; для этих чисел будет выделен® ; по 2 байта

END

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

После подготовки текстового файла с описанием ресурсов его следует откомпилировать в КЕБ—файл. Для этого вызывается компилятор BRCC.EXE или компилятор—компоновщик BRC.EXE. Последний не только создает RES—файл, но и пристыковывает его в конец исполняемого файла.

Поскольку компоновщик ВР также умеет работать с ресурсами (для этого введена директива {$R RESFNAME[.RES]}], удобнее использовать компилятор BRCC.EXE. Для его вызова дайте команду ДОС

BRCC MyRes

(предполагается, что путь к католгу размещения файла BRCC.EXE указан в переменной PATH). В результате такого обращения компилятор откомпилирует файл MYRES.RC в файл ресурса MYRES.RES.

 

Глава 9

Оглавление 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz