我的程序加载了很多图像,但我有一个问题,一个图像使用打印屏幕按钮来复制它,从游戏,但它是bmp,像所有其余的。每当我运行程序时,它都会说project1.exe引发异常类Ereaderror并且消息'stream read error'进程停止....
代码是这样的:
procedure TForm1.FormCreate(Sender: TObject);
var path, destination:string;
begin
path:=paramstr(0);
destination:=extractfilepath(path)+'Leagueoflegendsdesktop.bmp';
image1.Picture.LoadFromFile(destination);
end;
哪个是对的。你有什么建议我的?
答案 0 :(得分:1)
唯一的解释是该文件不是有效的Windows位图(可能是文件被截断)。或者文件可能使用Delphi不支持的一些深奥格式。例如,它是否使用行程编码。
如果文件不存在,您将收到一个不同的错误,表示不存在此类文件。因此,该文件存在但无法加载。因此,它不是Windows位图。
诊断这一步的步骤1是查看文件的格式。加载位图文件头并检查值是否有意义。可能最简单的方法是在调试器下运行程序时逐步执行VCL代码。启用“调试DCU”选项,以便您可以执行此操作。在TBitmap.ReadStream
单元的Graphics
中设置一个断点,并从那里取出。
说了这么多,你可能更容易避免尝试调试问题。如果您可以将图像加载到图像编辑器中,只需以Delphi将读取的格式保存图像的新副本。例如,一个简单的vanilla Windows位图,或者更好的是一个允许压缩的PNG文件。