Уважаемые знатоки, начал осваивать Lazarus (ОС Windows, раньше работал с Delphi) и упёрся в очень трудную для моего понимания проблему. Возможно решение очень простое, но не могу его никак понять. Прочитал кучу всего, но нигде упоминаний данной проблемы не нашел.
Задача: добавить в проект файл ресурсов с 4 bmp файлами и затем использовать эти изображения в режиме RunTime.
Проблема: при попытке загрузки ресурса в TBitmap ошибка типа "ресурс ХХХ не найден".
Подключал файл ресурсов в формате RES, собранный через brcc32.exe и подключал ресурсы непосредственно через RC файл - при распаковке EXE через 7-zip все картинки нормально работали (то есть в EXE файле присутствовали). При добавлении к распакованным изображениям расширения (*.bmp) они нормально открывались. Изображения сохранены как 24 разрядные BMP файлы.
Код весьма примитивен (тестовая программа):
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1;
{ you can add units after this }
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
CanvasBttn, Windows;
type
{ TForm1 }
TForm1 = class(TForm)
CanvasBttn1: TCanvasBttn;
Image1: TImage;
Image2: TImage;
procedure CanvasBttn1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses comobj;
{$R *.lfm} {$R lib\MsgIcons.rc}
procedure TForm1.CanvasBttn1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile('123.bmp');
Image2.Picture.Bitmap.LoadFromResourceName(hInstance, 'INFOPICT');
showmessage('!');
end;
end.
На форме кнопка и 2 Image. Загрузка из файла работает, а из ресурса нет.