2016-12-21 137 views
1

我找到了一个从资源文件加载位图的解决方案How to store images in FireMonkey?我试图在我的Firemonkey应用程序中使用它,但它找不到资源并引发错误“EresNotFound”。 我的资源.RC文件是这样的从资源加载位图

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的解决方案。 但它仍然没有找到林资源

+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),创建'TResourceStream'时可以使用'RT_BITMAP'而不是'RT_RCDATA'。 –