Содержание материала

Code:

procedure CreateResourceFile(

DataFile, ResFile: string// имена файлов

ResID: Integer              // id ресурсов

);

var

FS, RS: TFileStream;

FileHeader, ResHeader: TResHeader;

Padding: array[0..SizeOf(DWORD)-1] of Byte;

begin

 

{ Open input file and create resource file }

FS := TFileStream.Create(  // для чтения данных из файла

   DataFile, fmOpenRead);

RS := TFileStream.Create(  // для записи файла ресурсов

   ResFile, fmCreate);

 

{ Создаём заголовок файла ресурсов - все нули, за исключением

   HeaderSize, ResType и ResID }

FillChar(FileHeader, SizeOf(FileHeader), #0);

FileHeader.HeaderSize := SizeOf(FileHeader);

FileHeader.ResId := $0000FFFF;

FileHeader.ResType := $0000FFFF;

 

{ Создаём заголовок данных для RC_DATA файла

   Внимание: для создания более одного ресурса необходимо

   повторить следующий процесс, используя каждый раз различные

   ID ресурсов }

FillChar(ResHeader, SizeOf(ResHeader), #0);

ResHeader.HeaderSize := SizeOf(ResHeader);

// id ресурса - FFFF означает "не строка!"

ResHeader.ResId := $0000FFFF or (ResId shl 16);

// тип ресурса - RT_RCDATA (from Windows unit)

ResHeader.ResType := $0000FFFF

   or (WORD(RT_RCDATA) shl 16);

// размер данных - есть размер файла

ResHeader.DataSize := FS.Size;

// Устанавливаем необходимые флаги памяти

ResHeader.MemoryFlags := $0030;

 

{ Записываем заголовки в файл ресурсов }

RS.WriteBuffer(FileHeader, sizeof(FileHeader));

RS.WriteBuffer(ResHeader, sizeof(ResHeader));

 

{ Копируем файл в ресурс }

RS.CopyFrom(FS, FS.Size);

 

{ Pad data out to DWORD boundary - any old

   rubbish will do!}

if FS.Size mod SizeOf(DWORD) <> 0 then

   RS.WriteBuffer(Padding, SizeOf(DWORD) -

     FS.Size mod SizeOf(DWORD));

 

{ закрываем файлы }

FS.Free;

RS.Free;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить