Использование ресурса
Получить объект из ресурса не представляет проблемы: после инициации файла ресурсов Вы просто используете его метод Get, которому передаете ключ (имя) нужного ресурса.
Например, в следующей программе используется файл Status.res, созданный в предыдущем примере:
Uses Objects, Drivers, Views, Menus, Dialogs, App; var StatusRes: TResourceFile; {Файл ресурсов} type PMyApp =TМуАрр; {Программа в Turbo Vision} ТМуАрр = object (TApplication) Constructor Init; Procedure InitStatusLine; Virtual; end; Constructor TMyApp.Init; {Открывает поток, связанный с файлом ресурсов} begin StatusRes.Init(New(PBufStream, Init('status.res',stOpen,1024))); if StatusRes.StreamA.status < > 0 then HALT; RegisterType(RStatusLine); Inherited Init end; Procedure TMyApp.initStatusLine; {Получает строку статуса из файла ресурсов} begin StatusLine: = PStatusLine(StatusRes.Get('Статус')) end; var Prog: TMyApp; begin Prog.Init; Prog.Run; Prog.Done end.
Заметим, что если в файле ресурсов нет ресурса с указанным именем, метод Get возвращает значение NIL.
Любой ресурс можно получить из файла ресурсов сколько угодно раз и в любом порядке, т.е. файл ресурсов – это поток с произвольным доступом. При необходимости можно дополнять ранее созданный файл ресурсов новыми объектами или заменять существующие в нем объекты другими.
Для ускорения доступа к файлу ресурсов его можно связать с EMS-памятью или использовать для его размещения виртуальный диск.