Хранение ресурсов внутри EXE

leopard iconВ некоторых приложениях требуется хранить звуки, картинки или другие ресурсы для дальнейшего их использования. Вы можете их хранить как рядом с программой, так и упаковать их в саму программу для целостности. В этой статье я опишу как упаковать различные типы файлов в исполняющую программу и затем вызвать их в процессе работы.

Файлы ресурсов Lazarus имеют расширение *.lrs Для того чтобы использовать файлы как ресурсы, нужно пересоздать их при помощи программы lazres. (По умолчанию: C:\Lazarus\Tools\)

Для работы с программой Lazres требуется открыть командную строку, на Windows это сmd.exe и прописать команду по шаблону:

lazres "имя файла ресурсов" "включаемые файлы (file1 file2 file3 ...)"

Например для упаковки картинки требуется, ввести команду: lazres leo.lrs Leopard.jpg

1

cd C:\lazarus\tools — для того чтобы не прописывать путь до программы LazRes, переходим в рабочий каталог данной программы.

lazres leo.lrs Leopard.jpg — leo.lrs произвольное имя,  Leopard.jpg — имя картинки. Обратите внимание что для того чтобы не прописывать путь к картинке, она должна находится в рабочем каталоге командной строки, если можно так выразится. В нашем случае это C:\lazarus\tools.

Leopard.jpg ResourceName=’Leopard’ Type=’JPG’ — данная строка говорит нам об успешном преобразовании картинки в ресурс Lazarus.

Теперь для того чтобы включить наш ресурс в программу нужно в раздел initialization добавить {$I Leo.lrs} , а в раздел Uses добавить lResources

2

Так, теперь чтобы вызвать нашу картинку в программе требуется выполнить след. код:

Image1.Picture.LoadFromLazarusResource('Leopard');  //Указываем имя картинки без расширения

В итоге у меня получилось вот так:

3

Возможные ошибки:

При отсутствии файла, компилятор выдаст нам ошибку: Fatal: Cannot open include file «Имя ресурса»

Если у вас возникает ошибка Fatal: Syntax error, «BEGIN» expected but «identifier LAZARUSRESOURCES» found — то вы забыли добавить в раздел Uses lResources, или включаете ресурс не в разделе initialization

Если у вас все же не выходит, выкладываю исходники: Скачать 682Кб

 

Хранение ресурсов внутри EXE обновлено: 22 апреля, 2016 автором: Oleg E.
Share

5 комментариев “Хранение ресурсов внутри EXE

  1. А можно ли в программе обратно сохранить из ресурса в отдельный файл?

  2. У меня возник такой вопрос: можно ли таким образом запаковать в exe файл локальное веб-приложение, например созданную книгу с анимацией и навигацией, состоящее из нескольких страниц и не требующих установленных веб-серверов?

  3. Подскажите пожалуйста, я преобразовал файл 1.txt (это двумерная матрица) в ресурс dataGaz.lrs.
    Теперь как мне обратиться к данным этого ресурса.
    раньше я писал
    assignfile(переменная,’1.txt’ );
    и дальше считывал и обрабатывал.
    А как мне теперь связать с переменной данные из ресурса dataGaz.lrs

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *