230______________________________________________________Глава 9
Поскольку компоновщик ВР также умеет работать с ресурсами (для этого введена директива {$R RESFNAME[.RES]}], удобнее использовать компилятор BRCC.EXE. Для его вызова дайте команду ДОС
BRCC MyRes
(предполагается, что путь к католгу размещения файла BRCC.EXE указан в переменной PATH). В результате такого обращения компилятор откомпилирует файл MYRES.RC в файл ресурса MYRES.RES.
9.4.2. Использование ресурсов
Чтобы компоновщик ВР пристыковал ресурсный файл к исполняемой программе, вставьте в ее текст директиву $R, например:
{$R MyRes}
Для получения строки из строкового ресурса используется вызов функции LoadStrng. Следующая программа выведет на экран содержимое строкового ресурса, описанного на с.228:
Uses WinAPI;
{$R MyRes} var
Buf: array [Byte] of Char;
k : Integer;
begin
for k := 1 to 5 do begin
if LoadString(hinstance, k, Buf, SizeOf(Buf))<>0 then
WriteLn(Buf) end;
end.
Доступ к ресурсам пользователя сложнее и выполняется в такой последовательности:
• с помощью FindResource создается дескриптор ресурса;
• если ресурс найден (FindResource возвращет не ноль), он загружается в память обращением к LoadResource, которая возвращает дескриптор выделенного ресурсу блока памяти;
• с помощью LockResource получаем физический адрес блока памяти и работаем с ресурсом;
• после использования ресурса удаляем его из памяти обращением к
FreeResource.
Следующая программа прочитает и распечатает содержимое ресурса, описанного на с.229:
Uses WinAPI;
{$R MyRes! type
PMyRes ^TMyRes;