TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

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

Странности

FAQ

Ссылки

Форум

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

Рассылка

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

Об авторе

 

 

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;

TMyRes = record

Text: array [0..19] of Char;

Wordi, Word2: Word;

Bytes: array [1..10] of Byte;

Inti, Int2: Integer-end;

var

P: PMyRes;

ResHandle, MemHandle: Word;

begin

ResHandle :=

FindResource(hinstance, 'MyRes', PChar(Longint(10)));

if HandleoO then begin

MemHandle := LoadResource(hinstance, ResHandle);

P := LockResource(MemHandle);

with P" do begin

WriteLn(Text) ;

WriteLn(Wordi, Word2:10);

for k := 1 to 10 do Write(Bytes[k]:4) ;

WriteLn;

WriteLn(Intl, Int2:10) end;

FreeResource(Handle) end end.

Небольшой комментарий. При обращении к FindResource третьим параметром требуется указать тип ресурса. Этот параметр определен как PChar, но не пытайтесь здесь поместить строку ' RCDATA', т.к. 2 слова этого параметра используются специфичным образом: старшее слово должно содержать 0, а в младшее необходимо поместить числовой идентификатор типа параметра (для ресурса пользователя он равен 10). Именно эту операцию и реализует выражение

PChar(Longint (10))

 

Глава 9

Оглавление 

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

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

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

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

Hosted by uCoz