Турбо Паскаль 6.0


TResourceFile Objects


+---------+ | TObject | +----+----+ +=======+=======+ | TResourceFile | +===============+

TResourseFile реализует поток, который может индексироваться ключевыми строками. Когда объекты сохраняются в файле ресурса, используя TResourseFile.Put, задается ключевая строка, которая идентифицирует этот объект. Объект может быть позже получен указанием этой ключевой строки в вызове TResourseFile.Get. Для обеспечения быстрого и эффективного доступа к объектам, хранящимся в файле ресурса, TResourseFile хранит ключевые строки в отсортированной коллекции строк (используя тип TResourseCollection) вместе с позицией и размером данных этого ресурса в файле ресурса. Как и в случае потоков, типы объектов, записываемые и читаемые из файла ресурсов, должны быть зарегистрированы с помощью RegisterType.

Поля

Stream Stream: PStream; Только чтение Указатель на поток, связанный с этим файлом ресурса.

Modified Modified: Boolean; Чтение/Запись Установлен в True, если файл ресурса был модифицирован.

Методы

Init constructor Init(AStream: Pstream); Перекрывается: Никогда Инициализирует файл ресурса, используя поток, заданный через AStream, и устанавливает поле Modified в False. Например:

ResFile.Init(New(TBufStream, Init("MYAPP.RES', stOpenRead, 1024)));

Во время инициализации Init смотрит в заголовке файла ресурсов текущую позицию в потоке. Формат заголовка файла ресурсов:

type TResFileHeader = record Signature: array[14] of Char; ResFileSize: Longint; IndexOffset: Longint; end;

где Signature содержит 'FBPR', ResFileSize содержит размер всего файла ресурсов, за исключением полей Signature и ResFileSize (т.е. размер файла ресурса -8 байт) и IndexOffset содержит смещение коллекции индексов от начала заголовка. Если Init не находит заголовка файла ресурса в текущей позиции AStream, он считает, что создается новый файл ресурса и создает пустой индекс. Если Init видит метку .EXE файла в текущей позиции потока, он просматривает поток до конца файла .EXE и ищет заголовок файла ресурса здесь. Аналогично Init будет пропускать оверлейный файл, добавленный к .EXE файлу (так же как OvrInit пропускает файл ресурса). Это означает, что Вы можете добавить оверлейный файл и файл ресурса (в любом порядке) в конец .EXE файла Вашей программы. (Именно это сделано с выполнимым файлом IDE - TURBO.EXE).




Начало  Назад  Вперед