Валентин Озеров

Книги → Советы по Delphi. Версия 1.4.3 от 1.1.2001 → Сохранение и выдёргивание ресурсов в DLL или EXE

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

  RS.WriteBuffer(Padding, SizeOf(DWORD) - FS.Size mod SizeOf(DWORD));

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

 FS.Free;

 RS.Free;

end;

Данный код не совсем красив, и отсутствует обработка ошибок. Правильнее будет создать класс, включающий в себя данный пример. Извлечение ресурсов из EXE теперь рассмотрим пример, показывающий, как извлекать ресурсы из исполняемого модуля. Вся процедура заключается в создании потока ресурса, создании файлового потока и копировании из потока ресурса в поток файла.

Листинг 2:

procedure ExtractToFile(Instance:THandle; ResID: Integer; ResType, FileName:String);

var

 ResStream: TResourceStream;

 FileStream: TFileStream;

begin

 try

  ResStream := TResourceStream.CreateFromID(Instance, ResID, pChar(ResType));

  try

   //if FileExists(FileName) then

   //DeleteFile(pChar(FileName));

   FileStream := TFileStream.Create(FileName, fmCreate);

   try

    FileStream.CopyFrom(ResStream, 0);

   finally

    FileStream.Free;

   end;

  finally

   ResStream.Free;

  end;

 excepton E:Exception do

  begin

   DeleteFile(FileName);

   raise;

  end;

 end;

end;

Всё, что требуется, это получить Instance exe-шника или dll (у Вашего приложения это Application.Instance или Application.Handle, для dll Вам прийдётся получить его самостоятельно :) ResID тот же самый ID , который был присвоен ресурсу ResType WAVEFILE, BITMAP, CURSOR, CUSTOM – это типы ресурсов, с которыми возможно работать, но у меня получилось успешно проделать процедуру только с CUSTOM FileName – это имя файла, который мы хотим создать из ресурса

Пока ..

Igor Nikolaev aKa The Sprite

[spritesoft@bos.ru

← предыдущая следующий раздел →

Страницы раздела: 1 2

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.