2016-12-21 8 views
1

Ich finde eine Lösung für das Laden Bitmap aus Ressource-Datei auf How to store images in FireMonkey? Und ich habe versucht, es in meiner Firemonkey-Anwendung zu verwenden, aber es kann keine Ressource finden und löst einen Fehler "EresNotFound". Meine Ressourcen RC-Datei wird wie folgtBitmap von Ressource laden

Bitmap_1 BITMAP "Test.bmp" 

und mein Code

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; 

ich auch eine Lösung auf die Frage Delphi 2010: unable to find resource - EResNotFound gefunden. Aber es findet noch nicht

+0

sieht Firemonkey-Code arbeiten Haben Sie diesen Artikel lesen https://delphihaven.wordpress.com/2013/01/26/surviving-without-image-lists-in- fmx/und folgten alle Schritte von dort? – RBA

Antwort

7

Es gibt mehrere Probleme in Ihrem Code Recource, Sie Ressource als RCDATA

Bitmap_1 RCDATA "Test.bmp" 

auch aussieht wie Sie VCL-Anwendung erstellt, und es ist ein Tippfehler in Ressourcentyp deklarieren müssen Name, sollte es sein RT_RCDATA, wie diese

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

Vielen Dank. Es funktioniert richtig. Danke vielmals. – Fayyaz

+0

@Fayyaz, bitte [akzeptieren] (http://stackoverflow.com/help/someone-answers) diese Antwort, wenn es die Lösung für Ihr Problem ist ... – whosrdaddy

+0

'BITMAP' ist ein gültiger [Ressourcentyp] (https: //msdn.microsoft.com/en-us/library/windows/desktop/ms648009.aspx), können Sie 'RT_BITMAP' anstelle von' RT_RCDATA' verwenden, wenn Sie 'TResourceStream' erstellen. –