Использование ресурса
Получить объект из ресурса не представляет проблемы: после инициации файла ресурсов Вы просто используете его метод 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-памятью или использовать для его размещения виртуальный диск.