2010-11-19 64 views
4

我一直在寻找小时在网,使用谷歌的图片,试图对PDF的和仍然无法 在Delphi 7加载图像资源..德尔福7 - >无法加载从资源文件

test.rc文件是这样的:

1 RT_BITMAP "1.bmp" 

我添加使用项目 - >添加到项目中的test.rc文件到我的项目..其中编制了test.res文件,似乎已经自动将.res文件包含到我的项目中(因为使用{$ R test.res}会说我已经在使用该资源)。我也尝试从项目中删除test.res使用Project->从项目中删除..并手动将{$ R test.res}添加到我的项目中。

但是不管我怎么包括test.res文件.. 我得到

项目Project2.exe模块引发的异常 类EAccessViolation有消息 “访问冲突在地址00408D0C 'Project2.exe'。阅读 地址00000001'。进程停止。 使用“步骤”或“运行”继续。

起初我用

Image1.Picture.Bitmap.LoadFromResourceID(hInstance,1); 

因为这是我发现使用谷歌。我得到了这个错误。 后来我试着

procedure TForm1.Image1Click(Sender: TObject); 
var bBitmap : TBitmap; 
begin 

bBitmap := TBitmap.Create; 
try 

    bBitmap.Handle := LoadBitmap(hInstance, '1'); 
    Image1.Width := bBitmap.Width; 
    Image1.Height := bBitmap.Height; 
    Image1.Canvas.Draw(0,0,bBitmap); 
finally 

    bBitmap.Free; 
end; 


end; 

这并没有得到我任何错误,并nither没有显示它的图像,这样的问题仍然没有解决..

我是一个新手的使用资源,但我的必须加载一些图片资源之前,我释放我的项目,所以.BMP文件将不会调和...

任何帮助将不胜感激!

+0

回到基础知识,你为什么需要这样做?为什么不在设计时将位图分配到图像中?或者,如果您想要某种动态加载,为什么不使用TImageList并在运行时从那里加载所选图像? – 2010-11-19 08:19:17

+0

My * .rc文件包含诸如“IDB_BLUBB BITMAP DISCARDABLE”Blubb.bmp“',即资源类型”BITMAP“而不是”RT_BITMAP“的行。也许这是罪魁祸首。 – 2010-11-19 08:28:13

+0

@ PA-我有一台机器的可视界面。我可以多次使用TImageList的唯一方法是加载默认值。bmp文件添加到图像组件,然后只从图像列表中加载另一个图像(因为您从TImageList加载图像时无法将另一图像加载到同一图像组件);我需要一个资源中的默认BMP图像文件,所以它不会因为 – user513185 2010-11-19 09:37:28

回答

7

我在测试程序中再现了完全相同的问题。

然后我将RT_BITMAP更改为BITMAP,重新编译RC并测试。

它的工作原理。

+0

真棒! :) 非常感谢!我所做的是将我的.RC文件修改为与建议的方式相同(仅将BITMAP替换为RT_BITMAP)。并且仅使用一个语句来加载资源:Image1.Picture.Bitmap.LoadFromResourceID(hInstance,1);完成了这项工作!不需要进一步添加。 - 使用Delphi 7 Pro。感谢PA,你不知道你用这个帮助了我多少! :) – user513185 2010-11-19 09:48:23

+0

P.S - 我使用Project-> Add to Project加载了.rc文件.. - 我真的希望这会帮助其他遇到此问题的人。 – user513185 2010-11-19 09:49:13