Консультация № 66345
10.12.2006, 13:42
0.00 руб.
0 2 2
Возник такой вопрос. Можно ли к одному модулю подключить два файла с одинаковыми ресурсами (оба, скажем, с битмапами)? Как в таком случае узнать, откуда нужно загрузить нужный рисунок?

Обсуждение

Неизвестный
11.12.2006, 08:15
общий
это ответ
Здравствуйте, Fynjy_8!
Не совсем понятно, что вы имеете в виду - dll с ресурсами или файлы *.res?
Но вы же сами программируете и должны знать, где у вас что лежит. У каждого ресурса имеется свой идентификатор, по которому можно его загрузить.
Неизвестный
11.12.2006, 12:18
общий
это ответ
Здравствуйте, Fynjy_8!

Конечно можно, ведь ресурсы различаются именами, которые Вы задаете самостоятельно.

Приведу пример использования.

Создаете файл <b><font color=purple>img.rc</font></b> - по своей сути он текстовый, в нем например Вы хотите описать два графических файла.
Это будет выглядеть так:
<code>
IMG RCDATA 1.jpg
IMG2 RCDATA 2.jpg
</code>

Далее создаем файл ресурсов, используя такую команду: <b><font color=purple>brcc32.exe img.rc</font></b>.
Файл <b>brcc32.exe</b> - Вы сможете найти в директории с установленным Delphi.

И наконец, применение файла ресурсов в программе:
<code>
uses jpeg;// это для работы с JPEG-форматом
.........
implementation

{$R *.dfm}
{$R img.RES}

//процедура ДОБЫТИЯ ресурса...

procedure LoadJPEGFromRes(NameJpg:string; ThePicture : TPicture);
var rs:TResourceStream;
JpegImg:TJPEGImage;{uses jpeg}
begin
rs:=TResourceStream.Create(HInstance, NameJpg, RT_RCDATA);
JpegImg:=TJPEGImage.Create;
JpegImg.LoadFromStream(rs);
ThePicture.Assign(JpegImg);
JpegImg.Free;
rs.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
LoadJPEGFromRes(‘IMG‘, Image1.Picture);//загружаем картинку из ресурса - обращаемся по имени...
// либо LoadJPEGFromRes(‘IMG2‘, Image1.Picture);
end;
</code>

Если Вам необходимо загрузить ресурсы из двуж файлов, то просто добавляете их ...
<code>
...........
implementation

{$R *.dfm}
{$R imgres1.RES}
{$R imgres2.RES}
</code>

Good Luck!!!
Форма ответа