2016-12-21 3 views
1

Я нашел решение для загрузки Bitmap из файла ресурсов на How to store images in FireMonkey? И я попытался использовать его в своем приложении Firemonkey, но он не может найти ресурс и вызывает ошибку «EresNotFound». My Resource .RC File Is Like ThisЗагрузка растрового изображения из ресурса

Bitmap_1 BITMAP "Test.bmp" 

и мой код

procedure Tform1.load_image_from_resource(var Im1: Timage; res_name: String); 
var InStream: TResourceStream; 
begin 
    InStream := TResourceStream.Create(HInstance, res_name,RC_RTDATA); 
    try 
    Im1.Picture.Bitmap.LoadFromStream(InStream); 
    finally 
    InStream.Free; 
    end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Load_image_from_resource(Image1,'Bitmap_1'); 
end; 

Я также нашел решение по этому вопросу Delphi 2010: unable to find resource - EResNotFound. Но до сих пор не находит recource

+0

вы читали эту статью https://delphihaven.wordpress.com/2013/01/26/surviving-without-image-lists-in- fmx/и следовали всем шагам оттуда? – RBA

ответ

7

Есть несколько вопросов, в вашем коде, вам нужно объявить ресурс как RCDATA

Bitmap_1 RCDATA "Test.bmp" 

также выглядит, как вы создали приложение VCL и есть опечатка в типе ресурсов имя, оно должно быть RT_RCDATA, работая FireMonkey код выглядит следующим образом

procedure Tform1.load_image_from_resource(var Im1: Timage; res_name: String); 
var InStream: TResourceStream; 
begin 
    InStream := TResourceStream.Create(HInstance, res_name, RT_RCDATA); 
    try 
    Im1.Bitmap.LoadFromStream(InStream); 
    finally 
    InStream.Free; 
    end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Load_image_from_resource(Image1, 'Bitmap_1'); 
end; 
+0

Большое спасибо. Это работает правильно. большое спасибо. – Fayyaz

+0

@Fayyaz, пожалуйста [примите] (http://stackoverflow.com/help/someone-answers) этот ответ, если это решение вашей проблемы ... – whosrdaddy

+0

'BITMAP' является допустимым [тип ресурса] (https: //msdn.microsoft.com/en-us/library/windows/desktop/ms648009.aspx), вы можете использовать 'RT_BITMAP' вместо' RT_RCDATA' при создании 'TResourceStream'. –

Смежные вопросы